美文网首页
判断是否是平衡二叉树

判断是否是平衡二叉树

作者: 张小盒small | 来源:发表于2019-08-04 14:00 被阅读0次
class Solution {
    public:
     
        int helper(TreeNode* root){
            
           if (root == NULL) return -1;
           
           int ldepth = helper(root->left);
           int rdepth = helper(root->right);
           
           if ((ldepth==-100) || (rdepth==-100)) return -100;
           
           if (abs(ldepth-rdepth)< 2) return max(ldepth,rdepth)+1;
           if (abs(ldepth-rdepth)>=2) return -100;
        }    
     
        
        bool isBalanced(TreeNode *root) {
            if (root==NULL) return true;
            return ((helper(root)==-100)? false : true);
        }
    };

解法的巧妙之处在于帮助函数的返回值的选取,一方面我们需要返回每层递归的节点深度值,另一方面我们还需要将该返回值作为是否平衡的布值。求树的深度的问题是采用后序遍历的思想,因为树的深度是根节点左右子树深度的较大值,因此需要先求出左右子树的深度然后才可以最终确定根节点的深度,故需要采用后序遍历的深度搜索思想。

相关文章

  • 判断一个树是否是BST 求一棵平衡二叉树的最小深度 判断一棵二叉树是否高度平衡

  • 关于二叉树的算法题

    前序遍历中序遍历后序遍历判断是否是平衡二叉树判断是否是对称二叉树判断二叉树高度按照层遍历二叉树判断二叉树宽度

  • 剑指 offer:39、平衡二叉树

    39. 平衡二叉树 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 解题思路: 平衡二叉树:Wiki:在...

  • 平衡二叉树

    题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 平衡二叉树(Self-balancing binary ...

  • 平衡二叉树

    题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。

  • 39、平衡二叉树

    题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。

  • 牛客-剑指0ffer-平衡二叉树

    题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。

  • 19.判断二叉平衡树

    题目 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 代码

  • 1 二叉树的最近公共祖先(leetcode 236) 2 判断是否为平衡二叉树 3 判断二叉树是否为满二叉树 4 ...

  • 面试题:平衡二叉树

    题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 知识点 平衡二叉树 Qiang的思路 平衡二叉树是指一个...

网友评论

      本文标题:判断是否是平衡二叉树

      本文链接:https://www.haomeiwen.com/subject/udfydctx.html