思路:就是查看左右子树的高度是差是否超过1,由于求树的高度也是一个递归过程,所以可以将高度值作为一个中间结果作为判断,高度为-1,表示不是平衡二叉树。
code:
class Solution {
public:
int solve(TreeNode *root){
if(root == NULL)
return 0;
if(root->left == NULL && root->right == NULL)
return 1;
int leftHeigh = solve(root->left);
if(leftHeigh < 0)
return -1;
int rightHeigh = solve(root->right);
if(rightHeigh < 0)
return -1;
if(abs(leftHeigh - rightHeigh) > 1)
return -1;
return max(leftHeigh,rightHeigh) + 1;
}
bool isBalanced(TreeNode *root) {
int ret = solve(root);
return ret == -1 ? false : true;
}
};