Minimum Depth of Binary Tree

改造了一下maxdepth的代码

 public static int minDepth(TreeNode root) {
        if(root==null) return 0;
        int height=0;
        Queue<TreeNode> q=new LinkedList<TreeNode>();
        int visitedNum=0;
        int enQueNum=1;
        int lastLevNum=1;
        int tagNum=lastLevNum; //记录上次的lastNum 为了判断当前的叶子节点是不是本层最末尾
        q.offer(root);
        while(!q.isEmpty()){
            TreeNode now=q.poll();
            visitedNum++;
            
            if(now.left!=null){
                q.offer(now.left);
                enQueNum++;
            }
            if(now.right!=null){
                q.offer(now.right);
                enQueNum++;
            }
            if(lastLevNum==visitedNum){   
                height++;
                tagNum=lastLevNum;  //记录本层的lastLevNum
                lastLevNum=enQueNum;
            }
            if(now.left==null&&now.right==null&&now!=root) {
                if(visitedNum!=tagNum){ 
                height++;               //如果当前的叶子节点不是本层最末尾 则上段代码未执行 height缺1  
                }
                break;
                
            }
        }
      
        return height;
    }

 

posted @ 2015-06-24 20:03  hhrrrr  阅读(161)  评论(0)    收藏  举报