1 题目

求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。

2 解法

2.1 递归方法

要找到最小深度,首先要确定有根到叶的第一个叶节点,也就是一层一层确定.所以有:

/*** struct TreeNode {*  int val;*   struct TreeNode *left;* struct TreeNode *right;* };*/class Solution {
public:/*** * @param root TreeNode类 * @return int整型*/int run(TreeNode* root) {// write code hereif (root == NULL)return 0;if (root->left == NULL && root->right == NULL)return 1;if (root->left == NULL && root->right != NULL)return 1 + run(root->right);if (root->left != NULL && root->right == NULL)return 1 + run(root->left);return 1 + (run(root->left) < run(root->right) ?run(root->left) : run(root->right));}

性能太差:

2.2 非递归方法

用队列的方式, 先把每一层的节点放进队列里面,然后在把子节点放进队列里面,并循环检查头节点是否为叶节点.

代码:

/*** struct TreeNode {*  int val;*   struct TreeNode *left;* struct TreeNode *right;* };*/class Solution {
public:/*** * @param root TreeNode类 * @return int整型*/int run(TreeNode* root) {// write code hereif (root == nullptr)return 0;queue<TreeNode*> tmpQ;tmpQ.push(root);int depth = 1;while (!tmpQ.empty()) {int sum = tmpQ.size();for (int i = 0; i < sum; i ++) {TreeNode* tmp = tmpQ.front();tmpQ.pop();if (tmp->left == nullptr && tmp->right == nullptr)return depth;if (tmp->left != nullptr)tmpQ.push(tmp->left);if (tmp->right != nullptr)tmpQ.push(tmp->right);}depth ++;}}
};

性能比递归好了不少:

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 二叉树的最小深度

    给定二叉树,求最小深度 思路 1.递归 求根节点的左子树和右子树的最小深度 1.当只有一个根节点时,深度为1 2.当根节点为空时,深度为0 3.当根节点不为空时, (1) 当左子树 或 右子树为空时, ...

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

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

  8. 【算法系列之一】二叉树最小深度

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

  9. 二叉树的深度_[LeetCode 104] 二叉树的深度

    题目描述 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. ** 示例:** 给定二叉树 [3,9,20,null,n ...

最新文章

  1. MindInsight计算图可视设计
  2. VTK:环境球AmbientSpheres用法实战
  3. 深度学习(二)——深度学习常用术语解释, Neural Network Zoo, CNN, Autoencoder
  4. mysql数据库通过二进制 -【恢复数据记录】
  5. php实现数字滚动效果,vue如何实现数字滚动增加效果?代码示例
  6. div iframe html5,深入理解iframe
  7. 团队作业4——第一次项目冲刺(Alpha版本)4.25
  8. 技能类别mysql_MySQL 数据类型
  9. FileReader读取本地文件
  10. UICollectionView实现带头视图和组的头视图同时存在实现
  11. caffe 实践程序3——caffe提取特征以及由模型test数据
  12. 傅里叶变换和自然对数e原来是这么回事
  13. 5寸照片尺寸_证件照尺寸及更换背景颜色教程
  14. win7美化_笔记本怎么外接显示器?附Windows效率加倍/桌面美化实用技巧
  15. Panel面板和三种布局管理器
  16. 计算机 控制面板都打不开怎么办,控制面板打不开怎么办?控制面板打开办法大全...
  17. (技术类)中标麒麟linux终端命令操作之小白不知道的点(1)
  18. 温故而知新---jquery(jq)进阶篇
  19. 向量学习过程思想总结概括
  20. oracle中有没有distance,oracle_关于extended distance cluster  rac的介绍

热门文章

  1. java下载文件夹_java如何通过共享目录下载文件夹(有子文件夹)到本地目录?...
  2. wpf 控件生成图片_EyeshotCAD控件生成以及作用
  3. php 树状数组公式,PY个树状数组
  4. QT环境配置:QT5.8.0与VS2013环境配置
  5. 编程关键词介绍...
  6. 吴恩达《机器学习》学习笔记八——逻辑回归(多分类)代码
  7. Ubantu系统配置固定IP地址和Pycharm连接远程服务器
  8. Android之canvas详解
  9. PostgreSQL 常见操作
  10. 查看函数库.a函数符号信息