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.

思路:注意min和max的区别。max取两个分支的最大。所以如果一个分支是null,另一个分支是leaf。它肯定会取leaf,满足题目条件。

如果min也是直接取两个分支的最小,会出现一种错误的现在。一个分支是null,另一个分支是leaf,它取的不是leaf,而题目要都是depth,所以不对。因此要增加两个if来判断是不是leaf。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public int minDepth(TreeNode root) {
        if(root==null)
        {
            return 0;
        }
        if(root.left==null)
        {
            return 1+minDepth(root.right);
        }
        if(root.right==null)
        {
            return 1+minDepth(root.left);
        }
        return 1+Math.min(minDepth(root.left),minDepth(root.right));
    }
}

 

posted on 2016-09-23 06:04  Machelsky  阅读(109)  评论(0)    收藏  举报