字节考过的面试题!你真的会吗?110. 平衡二叉树(含不同解法)
创作时间:
作者:
@小白创作中心
字节考过的面试题!你真的会吗?110. 平衡二叉树(含不同解法)
引用
CSDN
1.
https://blog.csdn.net/2301_79417489/article/details/145522832
本文将详细介绍如何判断一个二叉树是否是平衡二叉树,包括暴力求解和优化解法两种方法。通过本文的学习,你将能够掌握平衡二叉树的判断方法,并能够编写相应的代码实现。
第一次做不用力求优化,没能力优化就先暴力解题,等能暴力解出来再递进到优化。
题目链接: 110. 平衡二叉树
题目: 给定一个二叉树,判断它是否是 平衡二叉树。
解法一:暴力求解O(N^2)
暴力解法的思路 :对于每个节点,计算其左右子树的高度,检查高度差是否超过1。如果所有节点都满足这个条件,那么整个树就是平衡的。
但这个方法的时间复杂度很高,因为每个节点的高度会被重复计算多次。例如,对于根节点,需要计算左右子树的高度,而这两个子树的高度计算又会递归到底层节点,导致时间复杂度为O(n^2),这在节点数较多时效率不高。
- 核心思路
暴力求解的思路不会通过,会超时。
step1. 平衡二叉树定义
判断是否为平衡二叉树,需 同时满足 以下条件:
- 每个节点 的左右子树的高度差不超过1
- 每个节点 的左右子树本身也是平衡二叉树
step2. 实现要点
- 定义一个方法用于求树的高度。
- 递归遍历树的每个节点。
- 求每个节点的左右子树各自的高度,判断是不是平衡二叉树。
- 细化要点
2.1 定义一个方法用于求树的高度。
//求一棵树的高度
private int maxDepth(TreeNode root) {
if (root == null){
return 0;
}
int leftCount = maxDepth(root.left);
int rightCount = maxDepth(root.right);
return Math.max(leftCount,rightCount) + 1;
}
2.2 终止条件(平衡二叉树的定义)
节点为null,返回true。
//空树 if (root == null){ return true; }每个节点的左右子树的高度差超过1,返回false。
//求出左右子树高度的最大值 int depth = Math.abs(maxDepth(root.left)-maxDepth(root.right)); //左右子树的高度差不超过1 if (depth > 1){ return false; }左右子树本身是平衡二叉树,返回true。
//左右子树本身也是平衡二叉树 return isBalanced(root.left) && isBalanced(root.right);
解法二:优化O(N)
高度重复求,导致复杂度过高,优化从减少重复计算高度入手。那就计算高度的同时判断是否平衡。在求高度的方法内加上判断语句即可。
【代码演示】
class Solution {
public boolean isBalanced(TreeNode root) {
//空树
if (root == null){
return true;
}
return maxDepth(root) != -1;
}
//求一棵树的高度
private int maxDepth(TreeNode root) {
if (root == null){
return 0;
}
int leftCount = maxDepth(root.left);
if (leftCount == -1){
return -1;
}
int rightCount = maxDepth(root.right);
if (rightCount == -1 ||Math.abs(leftCount - rightCount) > 1){
return -1;
}
return Math.max(leftCount,rightCount) + 1;
}
}
热门推荐
高并发场景下HTTP代理的Keep-Alive连接池优化
营造猫咪理想繁殖空间
如何根据绩效考核计算工资?
股票红利低波策略有效性分析
软PLC的崛起:工业自动化的未来趋势
南阳秘境:探秘地方美食与隐秘景点
如何清洁真无线蓝牙耳机以获得清晰的声音和卫生
股票最大风险的来源是什么?这种风险如何进行有效管理?
癫痫病患必看|吃对食物少发作,这些饮食禁忌要牢记
期权策略优化是什么
系统开发阶段:从需求分析到设计实现,你需要知道的关键步骤
住宅办理营业执照的条件及注意事项
圆中百知模型97丨贝勃定律
如何制定一个高效的规划方案?
汽车音响好坏的评判标准是什么?怎样根据标准选择合适的音响?
类似梦幻西游的游戏推荐:10款手游带你重温经典回合制玩法
口腔溃疡的成因及预防注意事项
购房避坑指南:如何核实房产证真伪及产权状态
太原市2025年3月日出日落时间表及日落景象
优化 Lora 微调:提升模型性能与泛化能力
植物学老师给的植物是什么?如何正确识别和养护?
三层架构实验配置详解
松针油的功效与作用及食用方法
论文选题时需要注意哪些关键因素?
电力哪个专业最吃香?这5个方向未来十年最抢手!
从《桃花庵歌》中看唐伯虎
考前一天的5个关键秘诀:助你以最佳状态迎接考试
美国3亿人口并不算最多,为什么只要加关税,就能影响全球?
在线职业培训课程平台有哪些类型?
塔防游戏电塔攻略:搭配玩法与优缺点详解