0
点赞
收藏
分享

微信扫一扫

GPT-4带来的思想火花

那小那小 2024-02-17 阅读 18

力扣网 110 平衡二叉树

题目描述

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:true

示例 2:

输入:root = [1,2,2,3,3,null,null,4,4]
输出:false

示例 3:

输入:root = []
输出:true

提示:

  • 树中的节点数在范围 [0, 5000] 内
  • -104 <= Node.val <= 104

思路分析

知识点:递归、二叉树

思路解析:

找出左右子树的高度,如果高度差出现大于一的情况就返回false,从根节点开始,先从左子树找,再去右子树找

这里为了方便判断左右子树高度大小,利用了假设法,先假设左子树高度最高,后面再判断一下,如果不对就换一下。

/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/

int BinaryTreeHight(struct TreeNode* root)//求二叉树高度
{
if (root == NULL)
{
return 0;
}
return fmax(BinaryTreeHight(root->left), BinaryTreeHight(root->right)) + 1;

}
bool isBalanced(struct TreeNode* root) {
if(root==NULL)
{
return true;
}
int left=BinaryTreeHight(root->left);//保存左子树高度
int right=BinaryTreeHight(root->right);//保存右子树高度
int max=left;//假设法
int min=right;
if(left<right)
{
min=left;
max=right;
}
if((max-min)>1)
{
return false;
}
return isBalanced(root->left)&&isBalanced(root->right);

}
举报

相关推荐

0 条评论