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

原创 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 39题 二叉树的深度 && 判断平衡二叉树 Java版

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

剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解

剑指offer 面试题39:判断平衡二叉树 提交网址:  http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId=...

《剑指offer》:[39-1]判断是否为平衡二叉树

题目:输入一棵二叉树的结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 上图中的二叉树就是一棵平衡二叉树。 分析:有了求二叉树深度的思...
  • gogoky
  • gogoky
  • 2016-06-19 16:02
  • 1228

判断是否为平衡二叉树

平衡二叉树对于查询效率的优化有重要意义,这次问题是输入一颗二叉树,判断该树是否为平衡二叉树。 我最开始理解的二叉树其实就是最大高度和最小高度差值小于或则等于1。并用代码实现出来: 1、分别找到树的...

判断平衡二叉树

题目:编程题-平衡二叉树 时间限制 1000 ms,内存限制 256000 kB,代码长度限制 8000 B 判断一个二叉树是不是平衡 说明:一棵二叉树任意一个节点的左右子树的深度差不大于1...

java算法10~判断是否为平衡二叉树

概念:平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它                        ...

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

判断的思路很简单,若一棵树是平衡二叉树,它的左右子树都是平衡二叉树,并且左右子树的高度差小于等于1。注意,实现的时候,判断左右子树的平衡性时,可以顺便计算子树高度,不用再另外计算一次,下面是其递归实现...

AVL树详解&面试题-判断一棵树是否是平衡二叉树

上次写了关于二叉搜索树的分析,但是二叉搜索树有一个缺陷,就是当插入一个有序(或接近有序)的序列时,二叉搜索树就相当于一个链表了,搜索效率会特别低。那么,如何来改进呢?这就引入了AVL树(高度平衡二叉树...

基于C写的平衡二叉树

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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