给定二叉树,求最小深度

思路

1.递归

求根节点的左子树和右子树的最小深度

1.当只有一个根节点时,深度为1

2.当根节点为空时,深度为0

3.当根节点不为空时,

(1) 当左子树 或 右子树为空时,返回不为空的子树的深度+1

(2)当左子树或右子树都不为空时,返回两个子树深度的最小值+1

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:int minDepth(TreeNode* root) {
if(root==NULL)
return 0;
if(!root->left&&!root->right)
{return 1;
}
if(root->left&&root->right)
{return 1+min(minDepth(root->left),minDepth(root->right));
}
if(root->left)
{return 1+minDepth(root->left);
}
if(root->right)
{return 1+minDepth(root->right);
}
return 0;}
};

2.层次遍历

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:int minDepth(TreeNode* root) {
queue<TreeNode*>que;
int step=0;
if(root!=NULL)
{que.push(root);
}
while(!que.empty())
{int size=que.size();step++;//step记录while执行的层数,即层数,即树的深度//执行一次while,遍历了一层,即执行一次for循环遍历了一层节点for(int i=0;i<size;i++){TreeNode *node=que.front();que.pop();if(!node->left&&!node->right)//如果在一层遍历的时候遇到叶子节点,返回{return step;}if(node->left){que.push(node->left);}if(node->right){que.push(node->right);}}}
return step;}
};

LeetCode 111 二叉树的最小深度相关推荐

  1. Leetcode 111.二叉树的最小深度

    Time: 20190901 Type: Easy 题目描述 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: ...

  2. [LeetCode 111] - 二叉树的最小深度 (Minimum Depth of Binary Tree)

    问题 给出一棵二叉树,找出它的最小深度. 最小深度是指从根节点沿着最短路径下降到最近的叶子节点所经过的节点数. 初始思路 不难看出又是一个需要层次遍历二叉树的题目,只要在112基础上作出简单修改即可得 ...

  3. [leetcode]111.二叉树的最小深度

    给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明:叶子节点是指没有子节点的节点. 示例 1: 输入:root = [3,9,20,null,null,1 ...

  4. LeetCode 111二叉树的最小深度-简单

    给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明:叶子节点是指没有子节点的节点. 示例 1: 输入:root = [3,9,20,null,null,1 ...

  5. leetcode - 111. 二叉树的最小深度

    给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null,15,7], ...

  6. leetcode 111. 二叉树的最小深度

    题目 思路 递归解法,思路直接看注释吧~ 注意对于最小深度定义,有一个小坑,下面这棵树的结果应该是2,而不是1,为此我专门加了一个判断: 如果根部只有一个孩子,则另一侧深度恒为1.此时,应取有孩子的那 ...

  7. 【Leetcode】111. 二叉树的最小深度

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

  8. 111. 二叉树的最小深度 golang

    111. 二叉树的最小深度 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,nu ...

  9. LeetCode解析------111. 二叉树的最小深度-深度优先搜索

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

最新文章

  1. SSMS2008插件开发(3)--部署调试SSMS2008插件
  2. 深入剖析Android系统
  3. lisp 任意点 曲线距离_奇怪的知识增加了:把标准形式的双曲线旋转来解决问题...
  4. Spring 更好地处理 Struts 动作
  5. linux内核态real cred,Linux内核实验报告——实验5.doc
  6. (转)剖析Delphi中的构造和析构
  7. VSCode打开中文乱码
  8. app测试-兼容性测试与云测试技术
  9. 软件质量保证计划_质量保证QA与质量控制QC
  10. anaconda 清华源挂了 怎么办 上交源ok
  11. ic卡读卡器软件_读卡器
  12. C# installshield使用教程
  13. BinarySerializer
  14. 3par linux多路径软件,Redhat6.X 配置HP3PAR7200存储多路径过程
  15. GPS 经纬度转换 百度、高德经纬度
  16. 赵小楼《天道》《遥远的救世主》解读(84)救主文化是什么?
  17. 政务内网、政务外网、政务专网
  18. 科技复原,3000多前年的木乃伊「发声」了
  19. 一款简洁的导航网源码
  20. 怎样实现url隐形转发?

热门文章

  1. 选择一款适合自己的ruby on rails IDE开发工具
  2. HDU2012 素数判定【入门】
  3. UVA665 LA5658 False coin【暴力】
  4. HDU1279 验证角谷猜想【水题】
  5. Java 源码 —— List
  6. 数学概念的提出(一) —— 熵的定义式 H(x)=-log2(p(x))
  7. 神奇的国际日期变更线
  8. Spark 机器学习 —— KMeans
  9. Python第三方库使用 —— PIL
  10. 个人博客网页设计_不会代码如何打造个人博客?你需要这个简单、免费的搭建工具...