平衡二叉树(NC62/考察次数Top45/难度简单)

Posted 码农指南

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了平衡二叉树(NC62/考察次数Top45/难度简单)相关的知识,希望对你有一定的参考价值。

描述:
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树。平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

注:我们约定空树是平衡二叉树。
示例1
输入:
{1,2,3,4,5,6,7}
返回值:
true
(题目来自牛客网)

用C++实现如下

class Solution {
    
    //注意从定义出发,平衡二叉树的定义是:1.空树;2.左右子树高度差绝对值不超过1,并且左右子树是平衡二叉树;
public:
    bool IsBalanced_Solution(TreeNode* pRoot) {
        return TreeDepth(pRoot) != -1;                   //通过 TreeDepth 是否等于 -1 来判断是否满足
    }
    
    int TreeDepth(TreeNode* pRoot){
        
        if(pRoot == NULL)                                //递归结束条件,返回0,与返回max的交相呼应
            return 0;
        
        int left = TreeDepth(pRoot->left);               //左边不满足,返回-1;
        if(left == -1)
            return -1;
        
        int right = TreeDepth(pRoot->right);             //右边不满足,返回-1;
        if(right == -1)
            return -1;
        
        if(abs(left-right)>1)                            //绝对值不满足,返回-1
        {
            return -1;
        }
        
        return max(left, right) + 1;                     //左右的最大值加1;
    }
};

纯手撕代码,如果觉得内容不错麻烦点个赞,后面陆续配上Top100算法题通俗易懂的讲解视频,可以花两个月时间完全掌握,进大厂不是梦,转行狗亲测!

以上是关于平衡二叉树(NC62/考察次数Top45/难度简单)的主要内容,如果未能解决你的问题,请参考以下文章

二叉树的最大深度(NC13/考察次数Top42/难度简单)

判断二叉树是否对称(NC16/考察次数Top61/难度简单)

判断二叉树是否对称(NC16/考察次数Top61/难度简单)

二叉树中是否存在节点和为指定值的路径(NC9/考察次数Top63/难度简单)

二叉树中是否存在节点和为指定值的路径(NC9/考察次数Top63/难度简单)

重建二叉树(NC12/考察次数Top31/难度中等)