news 2026/5/1 4:23:07

二叉树--求最小深度(迭代和递归)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
二叉树--求最小深度(迭代和递归)

使用了两种解法,递归法和迭代法。

两种方法的对比总结

  1. DFS (方法一minDepth):

    • 特点: 代码简洁,逻辑通过max巧妙处理了单链树的情况。

    • 缺点: 必须遍历完所有的分支才能确定谁最小。如果树严重左偏或右偏,栈深度较大。

  2. BFS (方法二levelOrder):

    • 特点: 利用队列层序遍历。

    • 优点:效率更高。因为它只要找到第一个叶子节点就直接return depth了,不需要像 DFS 那样把深处的节点也遍历一遍。在求“最短路径”或“最小深度”类问题时,BFS 通常是首选。

递归法

注意:如果左子树为空(left=0)或右子树为空(right=0),说明这不是叶子节点(最小深度要找到叶子节点),我们不能取 min(因为 min 会取到 0),必须取非空的那一侧(即 max)。

代码

// ========================================== // 方法一:递归法 (DFS - 后序遍历) // 核心思想:分别求左右子树深度,处理单支情况,最后取最小值 // ========================================== int minDepth(TreeNode* root) { if (root == NULL) return 0; // 终止条件 // 递归计算左右子树的深度 int left = minDepth(root->left); int right = minDepth(root->right); // 【关键逻辑】 // 如果左子树为空(left=0)或右子树为空(right=0),说明这不是叶子节点, // 我们不能取 min(因为 min 会取到 0),必须取非空的那一侧(即 max)。 // 例如:树 1->2,根节点 1 不是叶子,必须走 2 那边。 if (left == 0 || right == 0) { return max(left, right) + 1; } // 左右都不为空,说明是正常的左右分支,取最小的一边 + 根节点 1 return min(left, right) + 1; }

迭代法

使用层序遍历,一层一层往下找,一旦遇到第一个“叶子节点”,马上返回深度。

代码

// ========================================== // 方法二:迭代法 (BFS - 广度优先搜索) // 核心思想:一层一层往下找,一旦遇到第一个“叶子节点”,马上返回深度。 // 优点:对于求最小深度,这通常比 DFS 更快,因为它不需要遍历整棵树。 // ========================================== int minDepthBFS(TreeNode* root) { int depth = 0; queue<TreeNode*> q; if (root) q.push(root); while (!q.empty()) { int size = q.size(); // 记录当前层有多少个节点 depth++; // 开始处理新的一层,深度 +1 for (int i = 0; i < size; i++) { TreeNode* node = q.front(); q.pop(); // 【核心优化】 // 如果当前节点没有左孩子且没有右孩子,说明它是我们遇到的 // “层级最浅”的叶子节点。直接返回当前深度,无需继续遍历! if (node->left) q.push(node->left); if (node->right) q.push(node->right); if (!node->left && !node->right) return depth; // 找到最近的叶子,直接返回结果 } } return depth; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 5:47:42

基于大数据大数据分析的化妆品销售系统 美妆商城系统 爬虫可视化分析系统

目录大数据驱动的化妆品销售与美妆商城系统分析爬虫技术在数据采集中的应用可视化分析系统的功能实现核心技术架构与算法模型实际应用价值与效益项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作大数据驱动的…

作者头像 李华
网站建设 2026/4/21 12:42:55

javaShop JAVA版多用户B2B2C商城源码(PC+H5+小程序+APP) 友情提示

javaShop JAVA版多用户B2B2C商城源码&#xff08;PCH5小程序APP&#xff09; 友情提示&#xff1a;此源码需要有java基础的开发人员 JAVA版多用户B2B2C商城源码&#xff08;PCH5小程序APP&#xff09; 商城前台&#xff1a; http://buyer.javamall.com.cn 商城后台&#xff1a;…

作者头像 李华
网站建设 2026/4/23 13:40:33

高校教学AI辅助平台移动端架构:AI应用架构师的跨端适配方案

好的,作为一名资深软件工程师和技术博主,我很乐意为你撰写这篇关于“高校教学AI辅助平台移动端架构”的技术博客文章,重点探讨跨端适配方案。 高校教学AI辅助平台移动端架构实践:AI应用架构师的跨端适配挑战与方案 副标题: 如何优雅地让AI教学能力在手机、平板上无缝奔跑…

作者头像 李华
网站建设 2026/4/10 17:08:15

大数据领域数据预处理:优化数据存储与管理的关键

大数据领域数据预处理:优化数据存储与管理的关键 关键词:大数据预处理、数据清洗、数据集成、数据转换、数据归约、存储优化、管理效率 摘要:在大数据时代,数据预处理作为数据生命周期管理的核心环节,直接影响数据存储效率、分析质量和应用价值。本文系统解析数据预处理的…

作者头像 李华
网站建设 2026/4/18 16:08:09

亲测好用10个AI论文平台,助你轻松搞定本科生毕业论文!

亲测好用10个AI论文平台&#xff0c;助你轻松搞定本科生毕业论文&#xff01; AI 工具助力论文写作&#xff0c;轻松应对学术挑战 在当前的学术环境中&#xff0c;越来越多的学生开始借助 AI 工具来提升论文写作效率。无论是降低 AIGC 率&#xff0c;还是保持语义通顺&#xff…

作者头像 李华
网站建设 2026/4/22 6:12:58

OpenCode Rules 完整指南

概述 OpenCode的Rules功能通过创建AGENTS.md文件来提供自定义指令&#xff0c;类似于Cursor的规则。这些指令会包含在LLM的上下文中&#xff0c;用于定制特定项目的行为&#xff0c;让AI助手更好地理解项目需求和工作流程。 初始化 自动创建 运行/init命令自动扫描项目并生成AG…

作者头像 李华