LeetCode第111题解析
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [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题解析相关推荐
- [Leetcode][第111题][JAVA][BFS][二叉树的最小深度][BFS][递归]
[问题描述][简单] [解答思路] 1. 递归 自下而上 基本情况/结束条件 : 叶子节点的定义是左孩子和右孩子都为 null 时叫做叶子节点 当 root 节点左右孩子都为空时,返回 1 当 roo ...
- 利用二叉链表创建二叉树_利用递归解LeetCode第111题:二叉树的最小深度
题目描述(难度简单) 给定一个二叉树,找出其最小深度.最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,n ...
- LeetCode第874题解析
机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方.该机器人可以接收以下三种类型的命令: -2:向左转 90 度 -1:向右转 90 度 1 <= x <= 9:向 ...
- LeetCode第78题解析
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3] 输出: [[3],[1],[2],[1,2, ...
- [Leetcode][第104题][JAVA][二叉树的最大深度][递归][BFS]
[问题描述][简单] [解答思路] 1. 递归 终止条件/基本情况 root ==null 递推关系 max(l,r)+1 时间复杂度:O(N) 空间复杂度:O(height) class Solut ...
- 蓝桥杯第十二届真题解析
目录 前言 考试技巧 真题解析 第一题 (ASC) 第二题 (卡片) 第三题 (直线) 第四题 (货物摆放) 第五题 (路径) 第六题 (时间显示) 第七题 (最少砝码) 第八题 (杨辉三角形) 第九 ...
- leetcode分类刷题笔记
leetcode分类刷题笔记--基于python3 写在前面 1.做题如果实在想不出时间复杂度比较优的解法,可以先写出暴力解法,尝试在其基础上优化 2.排序.双指针.二分等--经常可以优化时间复杂度 ...
- shell编程1到10求和_重磅|郑州市第四届中小学创意编程暨智能设计大赛初中组真题解析(下)...
温馨提示 : 图片点击可放大噢! 判断题01 考察点:变量 解析:答案是A,正确. 新建变量时,勾选仅适用于当前角色是指在本角色内定义的变量,只在本角色程序范围内使用有效:勾选适用与所有角色是指此变量 ...
- 蓝桥杯练习系统习题-历年真题解析1(完整版)
文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-历年真题解析1 题目搜索方式:Ctrl+F--> 输入题目名称-&g ...
最新文章
- Spring中SmartLifecycle和Lifecycle的作用和区别
- Elasticsearch-03 CentOS7 / Windows上部署Elasticsearch5.6.16集群模式
- 服务器 Font family [‘sans-serif‘] not found.Falling back to DejaVu Sans.解决办法
- 使用 monitor 命令查看 redis 请求日志
- hibernate的lazy的使用
- python 替换字符串
- nginx优化配置选项
- Python常用图像处理
- 一个有用的区别IE不同浏览器CSS的标签
- Python中字符串格式化输出的学习笔记
- Java用swing实现的贪吃蛇
- 【经验】使用Oracle的SQL Developer创建用户方法
- c语言用fun函数求最大公约数,C语言用函数求最大公约,最小公约数
- Cocostudio使用简介
- “前首富”牟其中:欠的人情太多,要留着命来还
- 机电学生写给十年后自己的一封信
- 逻辑回归(Logistic Regression)原理及Python实现
- 将数据集做成VOC2007格式用于Faster-RCNN训练
- CI获取用户真实IP地址
- Python爬取手机壁纸