<LeetCode>111. 二叉树的最小深度

原创 2018年04月17日 11:33:48

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

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

解题思路:

这题我想了很久。。大概还是对递归不太熟悉吧。下面讲解一下递归的思路——

1.如果根节点是NULL,说明没有深度。

2.如果节点的左右儿子都不存在,说明只有自己,节点深度为1.

3.如果节点没有左儿子,但是有右儿子怎么办?那说明最小深度只能在右儿子处获得。这里需要理解一下逻辑,如果一个节点有左儿子,但是没有右儿子,说明这个节点不是叶节点,说明本节点不可能是最小深度,最小深度肯定比本节点要大。(只考虑这一部分的话)叶子只可能出现在右儿子及右儿子的儿子们,所以,要对右儿子做递归。

4.递归之后为什么要+1呢?因为每返回一次,说明深度+1。

5.同样的,如果没有右儿子,只有左儿子,那么应该对左儿子进行递归。

6.最后,选择左右深度较小的那一个,并且+1。哎?4的过程中不是+1了么,为什么还要+1?因为不+1的话返回不到根节点,只能到根节点的下一次节点。可以手工试验一下,就明白了。

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


Python算法实战视频课程--二叉树

-
  • 1970年01月01日 08:00

leetcode 111-二叉树最小深度

最小深度定义为根节点到最近叶子节点的深度分析: 空树,最小深度为0 左右子树都为空,最小深度为1 左右子树不都为空,左右子树中有空树的情况,最小深度一定是在非空树中产生,因为最小深度定义为到最近...
  • u013115610
  • u013115610
  • 2017-05-06 12:57:49
  • 145

LeetCode 111. Minimum Depth of Binary Tree(二叉树最小深度)

原题网址:https://leetcode.com/problems/minimum-depth-of-binary-tree/ Given a binary tree, find its min...
  • jmspan
  • jmspan
  • 2016-05-24 00:18:53
  • 414

LeetCode 二叉树的最小深度

计算二叉树的最小深度。最小深度定义为从root
  • dddongdong
  • dddongdong
  • 2014-10-20 19:13:13
  • 4198

Minimum Depth of Binary Tree 求二叉树最小高度/深度@LeetCode

/** * Minimum Depth of Binary Tree * * Given a binary tree, find its minimum depth. * * The m...
  • hellobinfeng
  • hellobinfeng
  • 2013-10-18 12:15:09
  • 2801

LeetCode:寻找二叉树的最小深度

原题:Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the sh...
  • VP_19951105
  • VP_19951105
  • 2017-03-23 09:54:09
  • 1710

二叉树的最小深度

给定一个二叉树,找出其最小深度。 二叉树的最小深度为根节点到最近叶子节点的距离。 样例 给出一棵如下的二叉树:         1      /     \     2  ...
  • brucehb
  • brucehb
  • 2015-08-12 22:51:58
  • 2595

leetcode 二叉树最小深度

刚开始刷leetcode,因为以前刷OJ,代码写的比较随意,所以这里一看就给个类就楞了, 想了一会不纠结这个了,开始做题,不敢定义全局变量,后来定义了static变量,写了个递归,结果可能姿势不对,...
  • ONE_PIECE_HMH
  • ONE_PIECE_HMH
  • 2016-08-29 20:41:20
  • 414

LeetCode(111) Minimum Depth of Binary Tree

题目Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the sho...
  • fly_yr
  • fly_yr
  • 2015-10-18 13:09:02
  • 1721

python_lintcode_97二叉树的最大深度 _155二叉树的最小深度

python_lintcode_97二叉树的最大深度 _155二叉树的最小深度
  • xiongxu3381
  • xiongxu3381
  • 2017-09-29 21:31:37
  • 273
收藏助手
不良信息举报
您举报文章:<LeetCode>111. 二叉树的最小深度
举报原因:
原因补充:

(最多只允许输入30个字)