本人电子系,只为一学生。心喜计算机,小编以怡情。
思路:层次遍历,层数计数由自己定义的last来计数
public int minDepth(TreeNode root) {
// write your code here
ArrayList<TreeNode> que=new ArrayList<>();
int count=0;
if(root==null) return 0;
que.add(root);
TreeNode last=root;
while(!que.isEmpty()){
TreeNode temp=que.remove(0);
if(temp.left==null&&temp.right==null)//遇到叶子结点了
return count+1;
if (temp.left!=null)
que.add(temp.left);
if(temp.right!=null)
que.add(temp.right);
if(last==temp&&!que.isEmpty()) {//当每次弹出的元素和last相同时,便意味着这一层结束了,可以计数值+1了
last = que.get(que.size()-1);//重置last,使其指向下一层的最后一个节点
count++;
}
}
return count;
}