递归判断平衡二叉树

平衡二叉树

http://www.nowcoder.com/questionTerminal/8b3b95850edb4115918ecebdf1b4d222

递归检查root的左右孩子是不是平衡树。如果没有,下面这个树也会被认为是平衡树了。
图片说明

class Solution {
public:
    /*
    此处算的高度都只是树的最大高度,左右子树最大高度相同,不代表这棵树就是平衡的,还要再对子树分别判断。
    */
    int getDepth(TreeNode* root)
    {
        if(!root)
        {
            return 0;
        }
        return 1+max(getDepth(root->left),getDepth(root->right));
    }
    bool IsBalanced_Solution(TreeNode* root) {
        if(!root)
            return true;
        int left=getDepth(root->left);
        int right=getDepth(root->right);
        if(abs(left-right)>1)
        {
            return false;
        }
        return IsBalanced_Solution(root->left)&&IsBalanced_Solution(root->right);
    }
};
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务