minimun-depth-of-binary-tree

题目: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.

 

/**

 * Definition for binary tree

 * public class TreeNode {

 *     int val;

 *     TreeNode left;

 *     TreeNode right;

 *     TreeNode(int x) { val = x; }

 * }

 */

import java.util.*;

public class Solution {

    public int run(TreeNode root) {

        if(root==null)

            return 0;

        if(root.left==null&&root.right==null)

            return 1;

 

//方法一:递归

     /*   if(root.left==null)// 若左子树为空,则返回右子树的最小深度+1

            return run(root.right)+1;

        if(root.right==null)

            return run(root.left)+1;

       

        int l=run(root.left);

        int r=run(root.right);

       

        return (l>r)?(r+1):(l+1);

        */

       //方法二

        Queue<TreeNode> q=new LinkedList<>();

       // 思路是层序遍历,找到第一个左右结点都为null的情况,就返回

        q.add(root);

        int level=0;

        while(!q.isEmpty()){

            int size=q.size();

             level++;

            for(int i=0;i<size;i++){

                TreeNode node=q.poll();

                if(node.left==null&&node.right==null)

                    return level;

                if(node.left!=null)

                    q.add(node.left);

                if(node.right!=null)

                    q.add(node.right);

               

            }

          

        }

       

        return level;

    }

}

posted on 2017-12-12 21:14  夜的第八章  阅读(213)  评论(0编辑  收藏  举报

导航