import java.util.*;

public class Solution {
    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
        // 初始化
        ArrayList<Integer> res = new ArrayList<>(); // 存储输出结果序列
        Queue<TreeNode> queue = new LinkedList<>(); // 辅助队列
        // 预处理
        if (root == null) return res;
        queue.offer(root);
        // 层序遍历,直到队列为空
        while (!queue.isEmpty()) {
            // 队首元素出队
            TreeNode head = queue.poll();
            res.add(head.val);
            // 其左右子结点入队
            if (head.left != null) queue.offer(head.left);
            if (head.right != null) queue.offer(head.right);
        }
        // 层序遍历结束,输出结果
        return res;
    }
}