NC62 平衡二叉树
Posted coder 靓仔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NC62 平衡二叉树相关的知识,希望对你有一定的参考价值。
情景提要
牛客题解系列,按照题号顺序开始。
NC62 平衡二叉树
01
题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
注:我们约定空树是平衡二叉树。
02
输入输出示例
输入:
{1,2,3,4,5,6,7}
返回值:
true
03
题目分析
思路
需要考虑两点:
(1)当前节点左右子树的高度差是否不超过1。
(2)当前节点的左右子树是否是平衡二叉树。
使用递归去做。
还需要一个判断节点高度的函数。节点的高度是左右子树的最大高度+1,仍然需要递归。
03
代码实现
方法
class Solution {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
if(!pRoot) return true;
if(!IsBalanced_Solution(pRoot->left) || !IsBalanced_Solution(pRoot->right)) return false;
int l1 = getDepth(pRoot->left);
int r1 = getDepth(pRoot->right);
if(abs(l1-r1)<=1) return true;
return false;
}
int getDepth(TreeNode* root){
if(!root) return 0;
return max(getDepth(root->left),getDepth(root->right)) + 1;
}
};
04
总结
二叉树的递归,判断平衡二叉树。
需要注意两个条件缺一不可。
欢迎评论区留言讨论哦
欢迎扫码关注
查看更多精彩内容
以上是关于NC62 平衡二叉树的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 1833. 雪糕的最大数量 / NC62 平衡二叉树 / NC7:股票(一次交易)/ NC22 合并两个有序的数组
NC41 最长无重复子数组/NC133链表的奇偶重排/NC116把数字翻译成字符串/NC135 股票交易的最大收益/NC126换钱的最少货币数/NC45实现二叉树先序,中序和后序遍历(递归)(代码片段