输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
class Solution {
int depth(TreeNode* root) {
if (!root)
return 0;
int d1 = depth(root->left);
if (d1 == -1)
return -1;
int d2 = depth(root->right);
if (d2 == -1)
return -1;
if (abs(d1 - d2) > 1)
return -1;
return max(d1, d2) + 1;
}
public:
bool isBalanced(TreeNode* root) {
return depth(root) != -1;
}
};