题解 | #判断是不是平衡二叉树#

判断是不是平衡二叉树

https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222

class Solution {
public:
    int IsBalanced_Solution2(TreeNode *root) {
        if (!root) return 0;
        auto l = IsBalanced_Solution2(root->left);
        auto r = IsBalanced_Solution2(root->right);
        if (l == -1 || r == -1 || abs(r - l) > 1) {
            return -1;
        }
        return max(l, r) + 1;
    }

    bool IsBalanced_Solution(TreeNode* pRoot) {
        return IsBalanced_Solution2(pRoot) != -1;
    }
};

思路:递归

* 判断是否平衡需要二叉树高度,所以递归函数必须返回高度。

* 高度必须大于等于0,所以可以用-1来表示子树不平衡。

* 当前节点为根的二叉树平衡的条件:

** 左右子树平衡。

** 左右子树高度差不超过1。

全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 12:19
点赞 评论 收藏
分享
沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
死在JAVA的王小美:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,我也是,让我免了一轮,但是硬气拒绝了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务