当前位置: 首页 > news >正文

LeetCode 分类刷题:110. 平衡二叉树

题目

给定一个二叉树,判断它是否是 平衡二叉树

解析

// 怎么递归?

// 左右子树的高度相差不超过1

// 递归计算左、右子树的高度,如果高度相差超过1,返回-1;否则正常返回树的高度

// 递归终止条件:节点为空 或 已经检测出某棵子树不平衡

答疑
问:代码中的 −1 是怎么产生的?怎么返回的?

答:在某次递归中,发现左右子树高度绝对差大于 1,我们会返回 −1这个 −1 会一路向上不断返回,直到根节点。

作者:灵茶山艾府
链接:https://leetcode.cn/problems/balanced-binary-tree/solutions/2015068/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-c3wj/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

答案

这里一开始没写对,因为leftH 和 rightH没有声明类型!!!不止犯一次的错误了!!!

为什么必须加let / const

  • 在 JavaScript 中,未声明的变量会成为全局变量(即使在函数内部)。
  • 递归时,leftHrightH会被错误地覆盖(例如:第一次递归的leftH会污染后续递归的leftH),导致高度计算错误。
/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } */ /** * @param {TreeNode} root * @return {boolean} */ var isBalanced = function(root) { function f(node) { if(node === null) return 0; const leftH = f(node.left); if(leftH === -1) return -1; const rightH = f(node.right); if(rightH === -1 || Math.abs(leftH - rightH) > 1) return -1; return Math.max(leftH, rightH) + 1; } return f(root) !== -1; };

复杂度分析

时间复杂度:O(n),其中 n 为二叉树的节点个数。

空间复杂度:O(n)。最坏情况下,二叉树退化成一条链,递归需要 O(n) 的栈空间。

http://www.cnnetsun.cn/news/105746.html

相关文章:

  • 为什么你的Buildx构建总失败?一文看懂构建上下文陷阱(90%的人都忽略了)
  • 【VSCode Jupyter量子模拟内核深度解析】:掌握高效量子计算开发的5大核心技巧
  • OpenBoard输入法:安卓平台智能输入终极解决方案
  • 终极方案:如何用SUSFS4KSU模块实现完美内核级Root隐藏
  • 完整Blender插件清单:从建模到渲染的终极工具指南
  • 【VSCode量子编程效率革命】:批量提交作业的5大核心技巧与实战指南
  • 2026破局:以营销自动化成熟度Macom模型为鞍,驰骋增长新赛道!
  • RookieAI_yolov8:基于YOLOv8的计算机视觉辅助系统技术解析
  • 网络安全专业全方位解析,这个专业能学明白,就业绝对是王者。从零基础入门到高薪就业,收藏这篇就够了!
  • 【量子编程进阶之路】:为什么顶级工程师都在用VSCode运行QML模型?
  • 32、打造家庭与小型办公网络安全防护体系
  • AI智能体:完整课程(初级)
  • 震惊!大模型在AIOps中竟有6大“死穴“!小白程序员避坑必看,从工具到智能要素的蜕变之路!
  • GSE宏编译器:魔兽世界玩家的技能循环自动化神器
  • DeeplxFile:突破文件翻译限制的终极解决方案
  • 针对机械设备行业一体化项目制管理解决方案
  • 别再问资质认证怎么查了!看这家公司如何用“大模型搜索”帮客户7天拿下高新认证
  • 【量子编程数据同步新突破】:如何在Q#和Python间无缝传递变量?
  • Java后端开发常见报错及解决方案:小白与大牛的问答故事
  • DeepSeek-V3实战指南:如何精准调优batch_size解决推理性能瓶颈
  • Docker Offload资源释放难题:5个你必须掌握的优化技巧
  • 全面封禁Cursor!又一家大厂,出手了~
  • 为什么你的量子模型总出错?VSCode调试面板告诉你真相
  • 【稀缺技术揭秘】:资深工程师都在用的Azure量子作业状态诊断流程
  • 免费视频增强神器:字节跳动SeedVR2让老视频秒变4K超清画质
  • VSCode Azure QDK 调试失败?(90%开发者都忽略的配置细节)
  • hsweb-framework Easy-ORM终极指南:企业级数据访问实战手册
  • 8、量子计算与技术发展:从理论根源到实际应用
  • 30、RTA API 详解:功能、使用与错误处理
  • 【量子开发效率提升10倍】:VSCode + Azure QDK标准项目模板深度解读