当前位置: 首页 > news >正文

二叉树的最小深度-力扣

使用DFS,在取左右子树的最小值时,需要注意,当左右子树只存在一个时,此时有一个返回值为0,此时不能用0作为最小深度,而是另一颗不为0的子树的最下深度,才是需要的值。

class Solution {
public:int minDepth(TreeNode* root) {if(root == nullptr){return 0;}int l_depth= minDepth(root->left);int r_depth = minDepth(root->right);if(l_depth == 0 || r_depth == 0){return max(l_depth, r_depth) + 1;}return min(l_depth, r_depth) + 1;       }
};

看到一种更简洁的DFS的写法,在这里记录一下:

class Solution {
public:int minDepth(TreeNode* root) {if (!root) return 0;if (!root->left) return minDepth(root->right) + 1;if (!root->right) return minDepth(root->left)  + 1;return min(minDepth(root->left), minDepth(root->right)) + 1;}
};

使用BFS对二叉树进行层序遍历,与最大深度相比,只需在将节点加入队列时,判断节点的左右子节点是否都不存在,如果都不存在,则直接返回最小深度即可。

class Solution {
public:int minDepth(TreeNode* root) {queue<TreeNode*> que;int depth = 0;if(root != nullptr){que.push(root);}while(!que.empty()){int size = que.size();depth++;for(int i = 0; i < size; i++){TreeNode * cur = que.front();que.pop();if(cur->left != nullptr){que.push(cur->left);}if(cur->right != nullptr){que.push(cur->right);}if(cur->left == nullptr && cur->right == nullptr){return depth;}}}return depth;       }
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CasaOS玩客云如何部署小雅AList并结合内网穿透远程访问海量资源
  • Android基础-AIDL的实现
  • 【人工智能】AI绘画工具基本介绍
  • 07.组件间通信-provide-inject(祖孙通信)
  • 记一次极其坑爹的 process.waitFor() 卡死问题
  • 【RAG入门教程04】Langchian的文档切分
  • 【代码随想录】【算法训练营】【第32天】 [122]买卖股票的最佳时机II [376]摆动序列 [53]最大子序和
  • string类的模拟实现的一些改进
  • R语言探索与分析18-基于时间序列的汇率预测
  • Spring Cloud Gateway CORS 跨域方案
  • 引入Springcloud--Sleuth-链路追踪中MDC是如何获取到traceid和何时放入traceid的
  • 用动态IP采集数据总是掉线是为什么?该怎么解决?
  • R语言探索与分析19-CPI的分析和研究
  • C++迈向精通:STL的Deque复现
  • 前端面试项目细节重难点(已工作|做分享)想(八)
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • E-HPC支持多队列管理和自动伸缩
  • JS 面试题总结
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Service Worker
  • Terraform入门 - 3. 变更基础设施
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 从零开始学习部署
  • 开发基于以太坊智能合约的DApp
  • 你真的知道 == 和 equals 的区别吗?
  • 如何合理的规划jvm性能调优
  • 三栏布局总结
  • elasticsearch-head插件安装
  • ionic异常记录
  • 阿里云重庆大学大数据训练营落地分享
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #13 yum、编译安装与sed命令的使用
  • #include到底该写在哪
  • #Linux(权限管理)
  • $(selector).each()和$.each()的区别
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (7)STL算法之交换赋值
  • (C#)一个最简单的链表类
  • (done) 两个矩阵 “相似” 是什么意思?
  • (差分)胡桃爱原石
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (算法)硬币问题
  • (一)appium-desktop定位元素原理
  • (转)visual stdio 书签功能介绍
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .net core + vue 搭建前后端分离的框架
  • .net 后台导出excel ,word
  • .net6 webapi log4net完整配置使用流程
  • .NET6实现破解Modbus poll点表配置文件
  • .NET程序员迈向卓越的必由之路