给定一个二叉树,找出其最小深度。
    最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

    分析:这道题与二叉树最大深度的区别在于,左右子树都为空,才可以上传这个子树,所以在代码逻辑方面会复杂一些

    递归法:
    public int minDepth(TreeNode root) {
    return sup(root);
    }
    private int sup(TreeNode Node){
    if(Node==null) return 0;
    int left = sup(Node.left);
    int right = sup(Node.right);
    if(Node.left==null&&Node.right!=null){
    return right+1;
    }
    if(Node.left!=null&&Node.right==null){
    return left+1;
    }
    return Math.min(left,right)+1;
    }

    迭代法:
    重点如加粗部分显示,当节点的左右子树都为空时,第一个遇见这种情况的就是最终答案。
    public int minDepth(TreeNode root) {
    Queue queue = new LinkedList<>();
    if(root==null) return 0;
    queue.offer(root);
    int ret=0;
    while(!queue.isEmpty()){
    ret++;
    int size = queue.size();
    while(size>0){
    TreeNode tmp = queue.poll();
    if(tmp.left!=null) queue.offer(tmp.left);
    if(tmp.right!=null) queue.offer(tmp.right);
    if(tmp.left==null&&tmp.right==null) return ret;
    size—;
    }
    }
    return ret;
    }