import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
/**
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) {
        //定义一个辅助的队列
        Queue<TreeNode> auxiliaryQueue=new LinkedList<TreeNode>();
        ArrayList<Integer> result=new ArrayList<Integer>();
        //判断边界条件
        if(root==null){
            return result;
        }
        //将头结点插入队列
        auxiliaryQueue.offer(root);
        while(!auxiliaryQueue.isEmpty()){
            //定义一个指针始终等于队列的第一个节点
            TreeNode currentRoot=auxiliaryQueue.peek();
            result.add(currentRoot.val);
            auxiliaryQueue.poll();
            //判断队列的第一个节点是否有左右节点
            if(currentRoot.left!=null){
                auxiliaryQueue.offer(currentRoot.left);
            }
            if(currentRoot.right!=null){
                auxiliaryQueue.offer(currentRoot.right);
            }
        }
        return result;
    }
}