【刷题之路】判断平衡二叉树

原创 2016年05月31日 19:53:55

采用递归的方式,不断返回左右子树中较大的值作为当前节点的depth,当前节点又与其他一个节点作为上一节点的左右子树,一旦某一左右子树递归叠加深度差大于一,以后全部返回false

class CheckBalance {

public:
    bool check(TreeNode* root) {
        // write code here
        int depth=0;
        return helper(root,depth);
    }
     bool helper(TreeNode* pRoot, int &Depth){
        if (pRoot == NULL){
            Depth = 0;  //递归结束条件,开始返回值
            return true;
        }
 
        int left, right;
        if (helper(pRoot->left, left) && helper(pRoot->right, right)){  //只有当之前返回值全为ture时,叠加才在继续
            Depth = max(left, right) + 1;  //当前节点之下的左右子树的较大深度为当前节点深度
            int dif = left - right;  //比较当前递归节点的左右子树差
            if (dif <= 1 && dif >= -1){
                return true;  //如果条件不成立,则返回之后的false,并且之后的if条件均不执行,一直返回false到结束
            }
        }
 
        return false;
    }
};
版权声明:本文为博主原创文章,未经博主允许不得转载。

《剑指offer》刷题笔记(知识迁移能力):平衡二叉树

《剑指offer》刷题笔记(知识迁移能力):平衡二叉树 转载请注明作者和出处:http://blog.csdn.net/u011475210 代码地址:https://github.com/WordZ...

判断二叉树是否是平衡二叉树

  • 2013年10月26日 23:25
  • 2KB
  • 下载

剑指Offer 39题 二叉树的深度 && 判断平衡二叉树 Java版

package test; public class TreeDepth { public class BinaryTreeNode{ int m_nValue; BinaryTr...

平衡二叉树源码

  • 2015年05月14日 10:23
  • 5KB
  • 下载

C语言实现平衡二叉树

  • 2015年08月10日 22:21
  • 7KB
  • 下载

判断一棵树是否为平衡二叉树

平衡二叉树是指:父节点的左子树和右子树的高度之差不能大于1,也就是说不能高过1层。 判断一棵树是否为平衡二叉树,需要判断每个节点的左右子树的深度,只判断整个树的根节点是不行的。 刚做了一道...

平衡二叉树

  • 2008年07月02日 20:01
  • 12KB
  • 下载

平衡二叉树产生

  • 2011年12月11日 21:19
  • 10KB
  • 下载

剑指 offer代码解析——面试题39判断平衡二叉树(高效方法)

题目:输入一颗二叉树的根结点,判断该树是不是平衡二叉树。 如果某二叉树中任意结点的左右子树的高度相差不超过1,那么它就是一棵平衡二叉树。 分析:所谓平衡二叉树就是要确保...

平衡二叉树

  • 2013年06月24日 13:08
  • 5KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【刷题之路】判断平衡二叉树
举报原因:
原因补充:

(最多只允许输入30个字)