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; }

浙公网安备 33010602011771号