字节考过的面试题!你真的会吗?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;
}
}
热门推荐
开盘:美股周四高开 市场关注经济数据与科技股财报
肿瘤复发预防指南:从饮食到心态的全方位管理
微积分的核心概念:导数、极限与洛必达法则
豌豆种植与生长全攻略(豌豆生长周期、最佳种植时间和注意事项)
东北大学与大连理工大学两所985大学,评实力,谁更胜一筹?
为什么农历总比新历晚?
快消品的销售模式有哪些?如何选择合适的模式
“急急如律令”该怎么翻译?这场文化出海的讨论值得深思
《哪吒2》周边卖疯了!导演饺子签名卡牌全球仅10张 炒到18万元
使用屏幕阅读器对 Excel 中的数据透视表进行数据筛选
AMD 锐龙9000系处理器散热需求测试:常规的设置+搭配足以应付日常使用
正在练腹肌的人营养怎样搭配
CS-STHA算法船舶避碰路径规划【附代码】
喝水这件小事,你真的做对了吗?一文读懂科学饮水指南
真凸嘴和假凸嘴的区别:从外观到矫正难度的全面解析
北京时间,从这里发出!
客户说生病了怎么回复
曲美他嗪,抗心绞痛药物?还是兴奋剂?
世界上最大的十艘邮轮:第一名甚至比航母还大
鬼谷子捭阖篇的6个精髓,及捭阖之道对我们现在处世待人等的启发
日军的九二式重机枪:一架机枪要22人才正常战斗,子弹还要刷上油
退休后职工医保要不要补缴?还是转居民医保?
精密机械加工:如何选择加工工艺和工装以提升精度与效率
500万元以下固定资产可以一次性计入“管理费用”?税局提醒!
文言文“所”字结构详解
皮带松紧度测量方法与标准
到底什么是量子坍缩
2024新疆冬季文化旅游推介会亮相成都,引发“新疆文旅热”
早起的“早”到底是几点?早于这个时间,心脏、大脑都受伤
企业往来款长期挂账有什么弊端