牛客链接 思路: 1 .初始化:一个队列Queue< TreeNode > queue, 将root节点入队列queue 第一次size = 1, 2. 如果队列不空,做如下操作:
注意每次进入循环时,先获取到队列里元素的个数,即queue.size(); 第,二次进去时,size为2,
- 弹出队列头,保存为,将cur的左右非空孩子加入队列
循环2,3步骤,直到队列为空
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> list = new ArrayList<Integer>();
if(root == null){
return list;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
int size = queue.size();
while(size!=0){
TreeNode cur = queue.poll();
list.add(cur.val);
if(cur.left != null){
queue.offer(cur.left);
}
if(cur.right != null){
queue.offer(cur.right);
}
size --;
}
}
return list;
}
}
哪里不明白,可以私聊我
|