import java.util.*;


/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer> > thelist= new  ArrayList<ArrayList<Integer> >();
        if(pRoot==null) return thelist;
        Queue<TreeNode> queue=new LinkedList<TreeNode>();//队列用来BFS遍历树
        queue.offer(pRoot);//1.把根节点放进去。包括left和right 放进去的是一个地址
        while(!queue.isEmpty()){//2.判断队空
            ArrayList<Integer> list=new ArrayList<Integer>();//3.用来存储每一层
            int size=queue.size();//4.队中有几个元素
            for(int i=0;i<size;i++){
                TreeNode temp=queue.poll();//5.队头出队
                list.add(temp.val);//6.加到该层的list中
                if(temp.left!=null) queue.offer(temp.left);//7.左子树入队
                if(temp.right!=null) queue.offer(temp.right);//8.右子树入队 继续转到2进行判断
            }
            thelist.add(list);
        }
        return thelist;


    }

}