news 2026/9/6 0:45:13

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

作者头像

张小明

前端开发工程师

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/9/5 4:31:14

深度测评自考必备AI论文平台TOP10

深度测评自考必备AI论文平台TOP10 自考论文写作工具测评&#xff1a;2026年TOP10榜单出炉 随着自考人数逐年攀升&#xff0c;论文写作成为众多考生面临的共同难题。从选题构思到文献检索&#xff0c;再到格式规范与查重修改&#xff0c;每一步都可能成为“卡壳点”。为帮助自考…

作者头像 李华
网站建设 2026/9/4 0:57:24

网站必装SSL证书的4大原因及域名SSL证书安装全指南

在数字化经营时代&#xff0c;企业网站不仅是品牌展示窗口&#xff0c;更是数据交互的核心载体。但多数企业可能忽视一个关键细节&#xff1a;未安装SSL证书的网站&#xff0c;如同向网络黑客敞开大门。据统计&#xff0c;未部署SSL证书的企业网站&#xff0c;数据泄露风险提升…

作者头像 李华
网站建设 2026/8/24 10:49:42

余行补位方法论:解码专精特新企业指数级增长的底层算法

余行补位方法论&#xff1a;解码专精特新企业指数级增长的底层算法一、传统增长范式的失效&#xff1a;从线性到指数的思维革命1.1 传统增长的三大陷阱研发陷阱&#xff1a;每年增加20%研发投入&#xff0c;却只换来5%的性能提升市场陷阱&#xff1a;每开拓一个新区域&#xff…

作者头像 李华
网站建设 2026/8/25 7:48:11

智能语音加湿器控制系统设计

阅读提示 博主是一位拥有多年毕设经验的技术人员&#xff0c;如果本选题不适用于您的专业或者已选题目&#xff0c;我们同样支持按需求定做项目&#xff0c;论文全套&#xff01;&#xff01;&#xff01; 博主介绍 CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W,csdn特邀作者…

作者头像 李华
网站建设 2026/8/21 12:02:01

Zemax光学设计偶次非球面优化技巧

一、非球面K系数与高次项开启时机1. 仅开K系数◦ 用于校正初级球差&#xff0c;适合对像差要求不高的简单系统&#xff08;如单透镜、双胶合望远镜物镜&#xff09;。◦ 场景&#xff1a;中小视场、低NA成像系统&#xff0c;或作为复杂系统的“基础校正”第一步&#xff0c;避免…

作者头像 李华