宁夏网站建设费用本地南京网站建设

张小明 2026/1/2 4:54:47
宁夏网站建设费用,本地南京网站建设,乔拓云智能建站官网登录入口,科技九洲君#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进行投诉反馈,一经查实,立即删除!

浏览网站 需要我安装wordpress在哪找做调查赚钱的网站

第一章:vLLM推理加速全解析,Open-AutoGLM性能跃迁新高度在大模型推理场景中,延迟与吞吐量是衡量系统效能的核心指标。vLLM 作为新一代高效推理框架,通过引入 PagedAttention 技术重构了传统注意力机制的内存管理方式,显…

张小明 2025/12/31 20:18:26 网站建设

国外知名网站小程序开发流程

大数据领域数据架构的自动化运维模式:从“救火队员”到“智能管家”的进化之旅关键词:大数据运维、自动化运维、数据架构、AIOps、运维工具链、异常检测、智能调度摘要:在大数据时代,企业每天产生的海量数据如同“数字石油”&…

张小明 2025/12/26 5:24:57 网站建设

网站头部修改行业网站名称

LangFlow镜像Webhook接收器:响应外部系统回调通知 在构建现代AI应用时,一个常见的挑战是如何让大语言模型(LLM)驱动的智能体真正“活”起来——不仅能被动地回答问题,还能主动感知并响应现实世界中的事件。比如&#x…

张小明 2025/12/28 12:05:48 网站建设

免费广告行业网站建设老婆中文字幕完整版第二季

Hive与Druid集成:实时OLAP大数据分析关键词:Hive、Druid、集成、实时OLAP、大数据分析 摘要:本文详细探讨了Hive与Druid的集成,以实现实时OLAP大数据分析。首先介绍了相关背景知识,包括目的、预期读者和文档结构。接着…

张小明 2025/12/26 5:25:01 网站建设

基于cms系统网站的建设wordpress打开要10秒

Grafana中文版快速入门指南:打造本土化监控仪表盘 【免费下载链接】grafana-chinese grafana中文版本 项目地址: https://gitcode.com/gh_mirrors/gr/grafana-chinese Grafana中文版是基于官方Grafana源码深度定制的汉化项目,为中文用户提供完整的…

张小明 2026/1/2 3:33:17 网站建设

肥城网站建设公司c 在线视频网站开发

LobeChat环境变量配置清单:每个参数都值得了解 在如今大模型应用百花齐放的时代,越来越多开发者不再满足于直接调用API写个简单的问答机器人,而是希望构建一个真正可用、可扩展、可维护的AI对话系统。LobeChat 正是这一趋势下的佼佼者——它不…

张小明 2026/1/1 4:15:20 网站建设