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

判断是不是平衡二叉树

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

跟上一题有点类似,如果用两层递归,时间复杂度太大。看了题解才发现可以边递归计算左右子树深度边判断是否平衡。可能平时不怎么用c++,竟然忘了引用这个功能。惭愧惭愧。。。

class Solution {
  public:
    bool judge(TreeNode* r, int& depth) {
        if (!r) return true;
        int left = 0, right = 0;//左右子树的深度
        if (!judge(r->left, left) ||
                !judge(r->right, right))return
                        false; //第一种情况,子树中就有非平衡的部分
        if (left - right > 1 ||
                right - left > 1) return
                        false; //第二种情况,子树都是平衡的,但本身不平衡

        depth = (left > right) ? left + 1 : right + 1;
        return true;
    }

    bool IsBalanced_Solution(TreeNode* pRoot) {
        // write code here
        int depth = 0;
        return judge(pRoot, depth);
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-29 17:30
点赞 评论 收藏
分享
king122:专业技能不要写这么多,熟悉和熟练你经不住问,排版有些难看,中间的空隙搞小一点,项目描述的话感觉是从课程中抄下来的,改一改吧,不然烂大街了,每个项目都写一两点,用什么技术实现了什么难点,然后再写一些数字上去像时间又花了90%这样,这样面试会多一些,如果觉得自己的项目还是不够用的话,我有几个大厂最近做过的实习项目,感兴趣的话可以看我简介中的项目地址
点赞 评论 收藏
分享
牛客38347925...:9,2学生暑期实习失利开始投小厂,给这群人整自信了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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