110.平衡二叉树

给定一个二叉树,判断它是否是 平衡二叉树

                          

题解:平衡二叉树 是指该树所有节点的左右子树的深度相差不超过 1。可以采用递归遍历每一个节点,得到其高度,在判断高度时不可避免的要用到其左右子树的高度,所以可以顺便判断出左右子树的高度相差是否大于1,若大于1,则该节点不是平衡的,整个子树也就不是平衡的。

代码如下:

class Solution {
public:
    int GetHeight(TreeNode* cur){
        if(cur==NULL) return 0;
        int LeftHeight = GetHeight(cur->left);
        if(LeftHeight==-1) return -1;
        int RightHeight = GetHeight(cur->right);
        if(RightHeight==-1) return -1;
        return abs(LeftHeight- RightHeight)>1? -1:1+max(LeftHeight,RightHeight);
    }

    bool isBalanced(TreeNode* root) {
        return GetHeight(root) == -1? false:true;
    }
};

  注意:

其中对节点的左右子树高度递归判断有漏洞,因为在递归的单层逻辑里对左右两个方向都做了判断,所以int LeftHeight = GetHeight(cur->left);这一语句是正确的判断整个左子树的情况,而不是单线的左子树。

相关推荐

  1. 110.平衡

    2024-06-16 11:32:04       10 阅读
  2. [leetcode] 110. 平衡

    2024-06-16 11:32:04       12 阅读
  3. 力扣110:平衡

    2024-06-16 11:32:04       14 阅读
  4. LeetCode110. 平衡

    2024-06-16 11:32:04       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-16 11:32:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-16 11:32:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-16 11:32:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-16 11:32:04       20 阅读

热门阅读

  1. IO密集型任务、计算密集型任务,以及Gil锁机制

    2024-06-16 11:32:04       6 阅读
  2. 【LeetCode 383】 赎金信

    2024-06-16 11:32:04       10 阅读
  3. 民法通则配套规定(二)

    2024-06-16 11:32:04       7 阅读
  4. ChatTTS开源项目推荐

    2024-06-16 11:32:04       9 阅读
  5. 服务发现全流程解析-APOLLO7.0

    2024-06-16 11:32:04       8 阅读
  6. uniapp实现内嵌其他网页的功能

    2024-06-16 11:32:04       7 阅读
  7. [CODE:-5504]没有[SYS.SYSOBJECTS]对象的查询权限

    2024-06-16 11:32:04       10 阅读
  8. KaTex在博客中显示数学公式

    2024-06-16 11:32:04       8 阅读
  9. Linux安装ActiveMQ

    2024-06-16 11:32:04       7 阅读