建设银行高校缴费网站网红营销视频

张小明 2026/1/11 12:15:16
建设银行高校缴费网站,网红营销视频,wordpress用户认证插件,如何快速网络推广赚钱#x1f4cb; 问题描述 给定一个二叉树#xff0c;判断它是否是高度平衡的二叉树。 平衡二叉树的定义#xff1a;一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 #x1f4a1; 解题思路 1. 理解平衡二叉树 平衡二叉树不仅仅是根节点的左右子树高度差不超… 问题描述给定一个二叉树判断它是否是高度平衡的二叉树。平衡二叉树的定义一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。 解题思路1. 理解平衡二叉树平衡二叉树不仅仅是根节点的左右子树高度差不超过1而是每个节点都必须满足这个条件。关键点空树是平衡的每个节点都需要检查需要同时获取子树的高度和平衡状态 多种解法解法1自顶向下递归朴素解法class Solution { public boolean isBalanced(TreeNode root) { if (root null) return true; // 检查当前节点是否平衡 int leftHeight height(root.left); int rightHeight height(root.right); boolean currentBalanced Math.abs(leftHeight - rightHeight) 1; // 递归检查左右子树 return currentBalanced isBalanced(root.left) isBalanced(root.right); } private int height(TreeNode root) { if (root null) return 0; return Math.max(height(root.left), height(root.right)) 1; } }复杂度分析时间复杂度O(n²) - 每个节点都要计算高度而高度计算本身也是O(n)空间复杂度O(n) - 递归栈深度缺点存在大量重复计算解法2自底向上递归最优解class Solution { public boolean isBalanced(TreeNode root) { return dfs(root) ! -1; } private int dfs(TreeNode node) { if (node null) { return 0; } // 递归获取左子树高度 int h_left dfs(node.left); if (h_left -1) { return -1; } // 递归获取右子树高度 int h_right dfs(node.right); if (h_right -1) { return -1; } // 检查当前节点是否平衡 if (Math.abs(h_left - h_right) 1) { return -1; } // 返回当前节点的高度 return Math.max(h_left, h_right) 1; } }复杂度分析时间复杂度O(n) - 每个节点只访问一次空间复杂度O(h) - 递归栈深度h为树的高度优点一次遍历同时完成高度计算和平衡判断避免重复计算尽早发现不平衡情况并终止递归解法3迭代法避免递归栈溢出javaimport java.util.*; class Solution { public boolean isBalanced(TreeNode root) { if (root null) return true; MapTreeNode, Integer heights new HashMap(); DequeTreeNode stack new ArrayDeque(); // 后序遍历 TreeNode lastVisited null; TreeNode node root; while (!stack.isEmpty() || node ! null) { if (node ! null) { stack.push(node); node node.left; } else { TreeNode peek stack.peek(); if (peek.right ! null peek.right ! lastVisited) { node peek.right; } else { TreeNode curr stack.pop(); int leftHeight heights.getOrDefault(curr.left, 0); int rightHeight heights.getOrDefault(curr.right, 0); if (Math.abs(leftHeight - rightHeight) 1) { return false; } heights.put(curr, Math.max(leftHeight, rightHeight) 1); lastVisited curr; } } } return true; } }复杂度分析时间复杂度O(n)空间复杂度O(n)适用场景树非常深递归可能导致栈溢出时使用 算法对比表方法时间复杂度空间复杂度代码复杂度适用场景推荐指数自顶向下递归O(n²)O(n)简单小规模数据⭐⭐自底向上递归O(n)O(h)简单通用场景⭐⭐⭐⭐⭐迭代法O(n)O(n)中等避免栈溢出⭐⭐⭐ 面试技巧1. 问题分析步骤text1. 确认平衡二叉树的定义 2. 思考暴力解法自顶向下 3. 分析暴力解法的缺点重复计算 4. 优化思路自底向上一次遍历 5. 实现优化解法2. 代码实现要点使用-1表示不平衡状态尽早返回减少不必要的递归注意空树是平衡的特殊情况3. 复杂度分析时间O(n) - 每个节点访问一次空间O(h) - 递归栈深度最坏情况O(n)4. 常见Follow-up问题Q如果树非常大递归会栈溢出怎么办A可以使用迭代版本用栈模拟递归。Q能写出非递归版本吗A使用后序遍历的迭代实现同时记录节点高度。Q如何测试你的算法A测试用例应包括空树、单节点树、完全平衡树、完全不平衡树、随机树。 实战练习练习1修改问题 - 返回不平衡的节点javapublic TreeNode findUnbalancedNode(TreeNode root) { // 修改dfs函数返回不平衡节点 // 练习实现这个函数 }练习2计算树的最大深度差javapublic int maxHeightDifference(TreeNode root) { // 返回树中任意节点左右子树的最大高度差 // 练习实现这个函数 } 总结判断平衡二叉树是一个经典的二叉树问题考察对递归、树遍历和算法优化的理解。自底向上递归解法是最优解兼具效率高和代码简洁的优点。关键收获平衡二叉树要求每个节点都满足平衡条件自底向上的思路可以避免重复计算使用特殊返回值如-1可以同时传递高度和状态信息递归和迭代可以互相转换各有适用场景掌握这个问题不仅有助于解决LeetCode 110还能加深对树相关算法的理解为更复杂的树问题打下基础。 相关题目104. 二叉树的最大深度111. 二叉树的最小深度543. 二叉树的直径
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

和城乡建设厅网站我是一条龙笔趣阁

三菱plc 伺服2轴送料机程序,图纸,设备运行流程,动作,视频 1.有完整注释 2.完整cad电气图纸 3.设备运行视频 程序块已经在项目上成熟应用,对三菱plc控制伺服等有很好的学习借鉴意义。 好好看一遍,有很大的提…

张小明 2026/1/4 12:42:06 网站建设

制作网站建设的公司wordpress页脚改颜色

三脚电感 Y电容:小身材大能量的EMI滤波黄金组合你有没有遇到过这样的情况?辛辛苦苦调好了一款电源,效率、温升、动态响应都没问题,结果一上EMI测试台——传导干扰在30MHz附近“冲天而起”,直接超标几十分贝。反复改la…

张小明 2026/1/5 4:31:26 网站建设

dede手机网站模版自己做营销型网站

Windows开发环境终极配置指南:Dorado软件仓库完整使用教程 【免费下载链接】dorado 🐟 Yet Another bucket for lovely Scoop 项目地址: https://gitcode.com/gh_mirrors/do/dorado 在Windows系统开发过程中,你是否曾经为繁琐的软件安…

张小明 2026/1/9 15:25:35 网站建设

网络推广商城网站帷客分享 wordpress

在数字化转型浪潮中,物联网技术已成为企业智能化升级的核心驱动力。面对海量设备接入、异构协议兼容、数据安全传输等挑战,构建一个稳定可靠的企业级物联网平台显得尤为重要。本文将深入探讨基于微服务架构的分布式物联网数据采集平台的设计理念、技术实…

张小明 2026/1/9 15:25:39 网站建设

京紫元年深圳网站建设电销外呼系统多少钱一个月

在数字化转型浪潮中,自动化测试已成为软件测试从业者的必备技能。然而,许多团队在推行自动化测试时往往陷入"为了自动化而自动化"的误区,导致投入产出比不理想。本文将从测试从业者的实际工作场景出发,剖析实施自动化测…

张小明 2026/1/9 15:25:35 网站建设