import java.util.*;
import java.util.ArrayList;
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList res = new ArrayList<Integer>();
if(root == null) return res;
Queue<TreeNode> q = new ArrayDeque<TreeNode>(); //队列这里用到ArrayDequeue是容量可变数组
q.add(root);
while(!q.isEmpty()){ // 逐层弹出节点
TreeNode poll = q.poll();
res.add(poll.val);
if(poll.left != null) q.add(poll.left);
if(poll.right != null) q.add(poll.right);
}
return res;
}
}
因为需要逐层便利且是从左及右,所以方可选择队列这个数据结构,因为他会按顺序输出数据且按顺序放入子节点