[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行在自己脑子里的记忆。

原文地址:https://www.cnblogs.com/zf007/p/11637921.html

时间: 2024-11-06 03:47:22

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

155 二叉树的最小深度

原题网址:https://www.lintcode.com/problem/minimum-depth-of-binary-tree/description 描述 给定一个二叉树,找出其最小深度. 二叉树的最小深度为根节点到最近叶子节点的距离. 您在真实的面试中是否遇到过这个题?  是 样例 给出一棵如下的二叉树: 1 /     \ 2       3 /    \ 4      5 这个二叉树的最小深度为 2 标签 二叉树 Depth-first Search(DFS) 思路:可参照二叉树的

求二叉树的最小深度

思路:用递归的方法求解. 输入:二叉树的根节点: 输出:二叉树的最小深度. 最小深度的定义:从根节点到叶子节点的最短路径上的节点数. 算法如下: 将二叉树分为这么几种情况: 传入的根节点为空,返回NULL: 传入根节点不为空,左子树为空,右子树为空,返回最小深度1: 传入根节点不为空,左子树为空,右子树不为空,返回右子树的最小深度+1: 传入根节点不为空,左子树不为空,右子树为空,返回左子树的最小深度+1: 传入根节点不为空,左右子树都不为空,则返回左右子树中最小深度的较小值+1. 代码如下:

【LeetCode-面试算法经典-Java实现】【111-Minimum Depth of Binary Tree(二叉树的最小深度)】

[111-Minimum Depth of Binary Tree(二叉树的最小深度)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node. 题目大意 给定

二叉树的最小深度——广度优先搜索

题目描述: 给定一个二叉树,找出其最小深度. 二叉树的最小深度为根节点到最近叶子节点的距离. 解题思路: 这个题目比较简单. 对于二叉树的问题,首先想到的是采用递归,广度优先搜索. 一个节点一个节点地遍历,直到第一次找到叶子节点为止. 注意编程的细节,代码里面有注释 参考代码:(C++) <span style="font-size:18px;">/** * Definition of TreeNode: * class TreeNode { * public: * int

九章算法面试题75 二叉树的最小深度

九章算法官网-原文网址 http://www.jiuzhang.com/problem/76/ 题目 给定一个二叉树,找出其最小深度. 二叉树的最小深度为根节点到最近叶子节点的距离. 在线测试本题 http://www.lintcode.com/zh-cn/problem/minimum-depth-of-binary-tree/ 解答 方法一:递归. 这道题可以用递归的方法,一个节点一个节点的把每个节点遍历一遍,并且在遍历的同时记录每个节点相对应的层数, 然后求出叶子节点当中的最小层数就是我们

LintCode 二叉树的最小深度

给定一个二叉树,找出其最小深度. 二叉树的最小深度为根节点到最近叶子节点的距离. 样例 给出一棵如下的二叉树: 1 /     \ 2       3 /    \ 4      5 这个二叉树的最小深度为 2 分析:与最大深度有区别 有单孩子的情况考虑 /** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * th

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

问题描述 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 解题思路 刚开始想得很简单,不就是类比求树的深度,空树返回0,非空树返回左右子树最小深度+1就ok吗? 如果你这么想,那真的too young too simple,sometimes naive. 因为很明显这种思路忽略了

111. 二叉树的最小深度

给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度  2. 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree public class MinimumDepthofBinaryTree

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

题目链接 : https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/ 题目描述: 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回它的最小深度 2. 思路: 思路很简单, 就是左右子树高度,选最小那个 刚开始我是这样做的 def minDe