news 2026/5/26 9:13:31

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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) 的栈空间。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 7:00:01

VSCode + Qiskit智能提示配置全攻略(从零到自动补全的终极指南)

第一章:VSCode Qiskit 的代码补全 在量子计算开发中,高效的编码体验离不开强大的代码补全功能。Visual Studio Code(VSCode)结合 Qiskit 开发插件,为开发者提供了智能提示、语法高亮和自动补全能力,显著提升…

作者头像 李华
网站建设 2026/5/25 12:27:05

GEO关键词AI排名优化哪家企业好

GEO关键词AI排名优化:至灵企业服务——您的理想之选在当今数字化营销竞争日益激烈的时代,企业要想在搜索引擎中脱颖而出,吸引更多潜在客户,关键词排名优化就显得尤为关键。特别是对于那些希望精准定位特定地理区域(GEO…

作者头像 李华
网站建设 2026/5/25 16:03:06

SeedVR2革命性突破:6GB显存实现专业级视频修复完整指南

在AI视频修复技术快速发展的当下,传统工具对高端硬件的严苛要求已成为技术普及的最大障碍。SeedVR2通过创新的模型优化方案,将显存需求从12GB以上降低至仅需6GB,让RTX 4060等主流显卡也能流畅运行专业级视频修复功能。这项突破性技术为短视频…

作者头像 李华
网站建设 2026/5/26 7:23:32

28、Linux使用技巧与优质信息源汇总

Linux使用技巧与优质信息源汇总 一、多屏幕分辨率设置 在Linux系统中,若你想在图形用户界面(GUI)中切换不同的屏幕分辨率,比如你常用1024 x 768分辨率,但在处理网页时想查看800 x 600甚至640 x 480分辨率下网页在浏览器中的显示效果,可按以下步骤操作: 1. 定位配置文…

作者头像 李华
网站建设 2026/5/25 20:31:18

30、Linux 系统使用与配置全解析

Linux 系统使用与配置全解析 1. 符号与数字相关 在 Linux 系统中,各种符号和数字有着特定的含义和用途。例如: | 符号 | 含义及用途 | | — | — | | *(星号) | 用于通配符扩展,在文件查找等操作中使用,如在命令中可表示匹配任意数量的任意字符,出现于 172、186 - …

作者头像 李华
网站建设 2026/5/25 22:45:48

Mybatis入门

1.创建数据库在数据库中创建一个表,命名随意,字段随意,但是一定要给id主键且自动递增!!!给表添加数据2.在idea中创建maven环境在新建项目中选择maven而不是java3.配置坐标打开maven项目中的pox.xml文件在de…

作者头像 李华