递归判断平衡二叉树

平衡二叉树

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);
    }
};
全部评论

相关推荐

不知道怎么取名字_:两个方向 1.简历针对性准备下 2.面试前也需要准备的 主要还是要看各个公司需求,看公司行业和岗位描述,那里面已经写了对技术的需求,一份简历,不可能和所有嵌入式岗位都匹配的
投递北京经纬恒润科技股份有限公司等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务