[LC]111题 二叉树的最小深度 (递归)

Posted zf007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LC]111题 二叉树的最小深度 (递归)相关的知识,希望对你有一定的参考价值。

①题目

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

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

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

示例:

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

技术图片

返回它的最小深度  2.

②思路

   使用深度优先搜索

③代码

  

 1 class Solution {
 2    public int minDepth(TreeNode root) {
 3      if (root == null) {
 4        return 0;
 5      } 
 6      if ((root.left == null) && (root.right == null)) {
 7        return 1;    //当“当前结点”为叶子结点时,返回1,退出本次递归,并且跳过了17行min_depth的自加。
 8      }
 9  
10      int min_depth = Integer.MAX_VALUE;  //因为要求最小深度,所以一开始把它设置为最大的int整数,这与530题题解的第三行异曲同工,也与783的低4行类似。
11      if (root.left != null) {
12        min_depth = Math.min(minDepth(root.left), min_depth);
13      }
14      if (root.right != null) {
15        min_depth = Math.min(minDepth(root.right), min_depth);
16      }
17      return min_depth + 1;            //每递归一次,只要不是第3行,第6行的情况,那么最终都会在这里让min_depth加个1。
18    }
19  }
20  //我们用深度优先搜索来解决这个问题。
21  //这是我看的别人的答案。

 

 

④学到的东西

    1、判断叶子结点,就是直接判断左右孩子为空不。

    2、要学会这种第17行给min_depth自加的行为。

    3、再次深化第10行在自己脑子里的记忆。

以上是关于[LC]111题 二叉树的最小深度 (递归)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Java刷题笔记— 111. 二叉树的最小深度

LeetCode Java刷题笔记— 111. 二叉树的最小深度

LeetCode第111题—二叉树的最小深度—Python实现

LeetCode第111题:二叉树的最小深度

LeetCode-111-二叉树的最小深度

⭐算法入门⭐《二叉树》简单05 —— LeetCode 111. 二叉树的最小深度