给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明: 叶子节点是指没有子节点的节点。

示例:

给定二叉树 [3,9,20,null,null,15,7],

    3/ \9  20/  \15   7

返回它的最小深度  2.

解法一:利用递归。与求二叉树最大深度类似,只不过只是将最大深度换成了最小深度。

class Solution {
public:int minDepth(TreeNode* root) {//递归的方法//递归的终止条件if(root == NULL) return 0;if(root->left == NULL)return minDepth(root->right) + 1;if(root->right == NULL)return minDepth(root->left) + 1;//当前层的逻辑int left = minDepth(root->left) + 1;int right = minDepth(root->right) + 1;//下探到下一层return left >= right ? right : left;//清理当前状态}
};
class Solution {
public:int minDepth(TreeNode* root) {//递归的方法//递归的终止条件if(root == NULL) return 0;//当前层的逻辑int left = minDepth(root->left);int right = minDepth(root->right);if(root->left == NULL || root->right == NULL)return left == 0 ? right + 1 : left + 1;//下探到下一层return min(left, right) + 1;//清理当前状态}
};

解法二:采用迭代,注意这里和二叉树的层序遍历,以及求二叉树的层序遍历的迭代法一样,只需要注意,如果有一个节点的左右孩子都没有,则可以立刻返回。

class Solution {
public:int minDepth(TreeNode* root) {//采用递归的方法时,一旦递归到有一个节点是叶子节点,即可返回int deep = 0;queue<TreeNode*> que;if(root) que.push(root);while(!que.empty()) {deep++;int length = que.size();while(length--) {TreeNode* tmp = que.front();que.pop();if(tmp->left == NULL && tmp->right == NULL) return deep;if(tmp->left) que.push(tmp->left);if(tmp->right) que.push(tmp->right);}}return deep;}
};

LeetCode第111题解析相关推荐

  1. [Leetcode][第111题][JAVA][BFS][二叉树的最小深度][BFS][递归]

    [问题描述][简单] [解答思路] 1. 递归 自下而上 基本情况/结束条件 : 叶子节点的定义是左孩子和右孩子都为 null 时叫做叶子节点 当 root 节点左右孩子都为空时,返回 1 当 roo ...

  2. 利用二叉链表创建二叉树_利用递归解LeetCode第111题:二叉树的最小深度

    题目描述(难度简单) 给定一个二叉树,找出其最小深度.最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,n ...

  3. LeetCode第874题解析

    机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方.该机器人可以接收以下三种类型的命令: -2:向左转 90 度 -1:向右转 90 度 1 <= x <= 9:向 ...

  4. LeetCode第78题解析

    给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3] 输出: [[3],[1],[2],[1,2, ...

  5. [Leetcode][第104题][JAVA][二叉树的最大深度][递归][BFS]

    [问题描述][简单] [解答思路] 1. 递归 终止条件/基本情况 root ==null 递推关系 max(l,r)+1 时间复杂度:O(N) 空间复杂度:O(height) class Solut ...

  6. 蓝桥杯第十二届真题解析

    目录 前言 考试技巧 真题解析 第一题 (ASC) 第二题 (卡片) 第三题 (直线) 第四题 (货物摆放) 第五题 (路径) 第六题 (时间显示) 第七题 (最少砝码) 第八题 (杨辉三角形) 第九 ...

  7. leetcode分类刷题笔记

    leetcode分类刷题笔记--基于python3 写在前面 1.做题如果实在想不出时间复杂度比较优的解法,可以先写出暴力解法,尝试在其基础上优化 2.排序.双指针.二分等--经常可以优化时间复杂度 ...

  8. shell编程1到10求和_重磅|郑州市第四届中小学创意编程暨智能设计大赛初中组真题解析(下)...

    温馨提示 : 图片点击可放大噢! 判断题01 考察点:变量 解析:答案是A,正确. 新建变量时,勾选仅适用于当前角色是指在本角色内定义的变量,只在本角色程序范围内使用有效:勾选适用与所有角色是指此变量 ...

  9. 蓝桥杯练习系统习题-历年真题解析1(完整版)

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-历年真题解析1 题目搜索方式:Ctrl+F--> 输入题目名称-&g ...

最新文章

  1. Spring中SmartLifecycle和Lifecycle的作用和区别
  2. Elasticsearch-03 CentOS7 / Windows上部署Elasticsearch5.6.16集群模式
  3. 服务器 Font family [‘sans-serif‘] not found.Falling back to DejaVu Sans.解决办法
  4. 使用 monitor 命令查看 redis 请求日志
  5. hibernate的lazy的使用
  6. python 替换字符串
  7. nginx优化配置选项
  8. Python常用图像处理
  9. 一个有用的区别IE不同浏览器CSS的标签
  10. Python中字符串格式化输出的学习笔记
  11. Java用swing实现的贪吃蛇
  12. 【经验】使用Oracle的SQL Developer创建用户方法
  13. c语言用fun函数求最大公约数,C语言用函数求最大公约,最小公约数
  14. Cocostudio使用简介
  15. “前首富”牟其中:欠的人情太多,要留着命来还
  16. 机电学生写给十年后自己的一封信
  17. 逻辑回归(Logistic Regression)原理及Python实现
  18. 将数据集做成VOC2007格式用于Faster-RCNN训练
  19. CI获取用户真实IP地址
  20. Python爬取手机壁纸

热门文章

  1. Java设计模式(二)创建型设计模式
  2. 首富马斯克裁员大反转。
  3. win10鼎信诺为什么安装不了_2016年鼎信诺常见问题处理.docx
  4. 在Win10中使用YAMAHA S-YXG50软波表
  5. 百度云管家下载速度也作假
  6. 关于cgi的一些总结
  7. S60V3是什么意思?
  8. MHDD详细图解教程一
  9. Java手机通讯录并实现自动发送QQ消息及单人视频聊天窗口
  10. ISkyShop多用户商城系统之微信店铺隆重发布