求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。
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.

真是一道奇怪的题目:为什么我写的递归的方案一直不可以。不行的原因我们后续再探讨,先把这道题目结束了。

public class Solution {

     int minDepth = Integer.MAX_VALUE;
     void help(TreeNode root, int depth){
        if(root.left == null && root.right == null){
            if(depth < minDepth)
                minDepth = depth;
        }else{
            if(root.left != null)
                help(root.left, depth+1);
            if(root.right != null)
                help(root.right, depth+1);
        }
    }
    public int run(TreeNode root) {

        if(root == null)return 0;
        else{
            help(root, 1);
            return minDepth;
        }


    }
}

先参考下面的这个思路完成这道题目,应该是可以的,这种思路也是我在追求实现的,因为理解起来比较直观。

来个非递归的,思路是层序遍历,找到第一个左右结点都为null的情况,就返回
import java.util.LinkedList;
import java.util.Queue;
public class Solution {
    public int run(TreeNode root) {
        if(root == null)