知识点:二叉树,队列,层次遍历

import java.util.ArrayList;

import java.util.ArrayDeque;

public class Solution {

public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
    ArrayList<Integer> arr = new ArrayList<Integer>();
    if(root==null)
        return arr;
    ArrayDeque<TreeNode> dq = new ArrayDeque<TreeNode>();
    dq.addLast(root);
    while(!dq.isEmpty()){
        int curSize = dq.size();//当前层的结点数
        while(curSize-->0){
            TreeNode p = dq.pollFirst();//取出队列头
            arr.add(p.val);//将结点值添加到数目中
            if(p.left!=null)//如果左结点不为空
                dq.addLast(p.left);//添加到队列尾
            if(p.right!=null)//如果右结点不为空
                dq.addLast(p.right);//添加到队列尾
        }
    }
    return arr;
}

}