平衡二叉树(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/难度简单)的主要内容,如果未能解决你的问题,请参考以下文章
判断二叉树是否对称(NC16/考察次数Top61/难度简单)
判断二叉树是否对称(NC16/考察次数Top61/难度简单)
二叉树中是否存在节点和为指定值的路径(NC9/考察次数Top63/难度简单)