字节考过的面试题!你真的会吗?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;
}
}
热门推荐
修约规则四舍六入五成双口诀
首个AI儿科医生在北京儿童医院“上岗” AI医生如何进行诊断?
动漫天才日,柯南绝对会上榜,谁才是你心中的动漫天才人物?
安全员危险源辨识与风险评估能力提升
Go语言中SQLite3数据库使用详解
我国道教四大名山
一招教你轻松识别,怎么看主板支持什么显卡
饮料们有新“身份证”了!ABCD应该怎么选?
“安宁疗护”让生命更有尊严
艺术长沙开幕在即!送您一份长沙看展推荐
轨迹系列游戏角色:艾丝蒂尔·布莱特
深度学习放射组学图在区分颅内孤立性纤维性肿瘤和血管瘤性脑膜瘤方面的价值
老年人肥胖症:病因、症状、诊断与预防
脑鸣患者慎用安眠药:三大副作用需警惕
足底扫描仪技术:为运动员提供个性化训练方案
Windows系统中网络共享设置完全指南
药品级塑料瓶的材质介绍
胆囊切除术:原理、风险与术后护理全解析
农业农村部发布2024年秋冬季茶树科学施肥指导意见
日本为何执意捕杀鲸鱼?并非为了吃肉,真正目的值得世界各国警惕
新加坡医疗保障体系:政府主导与市场化运作的完美结合
基因的概念
水陆空齐发力,立体重庆就是这么“牛”
馀事勿取黄历:古代智慧与现代理性的对话
启动最严格实名政策,接入公安权威数据平台,《王者荣耀》为什么要这么做?
如何治疗颈椎病导致的上肢疼痛麻木
晚餐应该吃什么食物可以更有效地减肥
不容忽视的淋巴结肿大:原因、检查与日常防护
羊奶和牛奶哪个更好消化吸收?
中国核潜艇为何让世界震惊?黄旭华:8年造出核潜艇,一生奉献给祖国