class Solution {
public:
bool isBalanced(TreeNode* root) {
if (root == nullptr) return true; // 空树是平衡的
// 计算当前节点的左右子树高度
int leftHeight = getHeight(root->left);
int rightHeight = getHeight(root->right);
// 检查当前节点是否平衡
if (abs(leftHeight - rightHeight) > 1) {
return false;
}
// 递归检查左右子树是否平衡
return isBalanced(root->left) && isBalanced(root->right);
}
private:
// 辅助函数:计算树的高度
int getHeight(TreeNode* node) {
if (node == nullptr) return 0;
return max(getHeight(node->left), getHeight(node->right)) + 1;
}
};