【刷题日记】之平衡二叉树
由于平衡二叉树这个概念比较陌生,所以一直留着这个题没做(原谅自己的菜鸡本质。。。)

意外地一次就通过了,小小地纪念一下。
先上代码为敬:

//任意节点左右子树的深度差不超过1
class Solution {
private:
    //计算节点子树的深度
    int depth(TreeNode* root){
        if(!root) return 0;
return 1 + max(depth(root->left),depth(root->right));
    }
public:
    bool IsBalanced_Solution(TreeNode* pRoot) {
        if(!pRoot) return true;
        
return abs(depth(pRoot->right) - depth(pRoot->left)) <= 1;
    }
};
其实刚看到这题马上就联想到了计算二叉树深度那道题,但是怀疑自己的思路不严谨,就百度了一下,结果。。。大佬的思路有点看不懂。
https://www.cnblogs.com/wanglei5205/p/8918624.html

算了,还是自己来吧。
思路还挺清晰的:
1.写一个函数可以计算每一个节点的深度(包括叶子结点);
2.再写一个函数,判断传入的根结点是否是平衡树,就是判断左右子树的高度差是否小于等于1。

完事儿了,撒花🎉
全部评论
这题解法不严谨,或者可以说根本就接错了
点赞 回复 分享
发布于 2020-06-04 09:48

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务