工程建设标准惠州seo网站排名
2026/1/28 16:40:00 网站建设 项目流程
工程建设标准,惠州seo网站排名,网站广告推广技巧分享,做头像网站有哪些题目 给定一个二叉树#xff0c;判断它是否是 平衡二叉树 解析 // 怎么递归#xff1f; // 左右子树的高度相差不超过1 // 递归计算左、右子树的高度#xff0c;如果高度相差超过1#xff0c;返回-1#xff1b;否则正常返回树的高度 // 递归终止条件#xff1a;节点为…题目给定一个二叉树判断它是否是 平衡二叉树解析// 怎么递归// 左右子树的高度相差不超过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 中未声明的变量会成为全局变量即使在函数内部。递归时leftH和rightH会被错误地覆盖例如第一次递归的leftH会污染后续递归的leftH导致高度计算错误。/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val (valundefined ? 0 : val) * this.left (leftundefined ? null : left) * this.right (rightundefined ? 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) 的栈空间。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询