public class Solution {
    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
    
        Queue<TreeNode> q=new LinkedList<TreeNode>();
        ArrayList<Integer> arr=new ArrayList<Integer>();
        ArrayList<ArrayList<Integer> > arr1=new ArrayList<ArrayList<Integer> >();
        
        if(pRoot==null) return arr1;
        TreeNode cur=pRoot,last=pRoot;TreeNode tail=pRoot;
        q.offer(cur);
        while(!q.isEmpty())
        {
            cur=q.poll();
            arr.add(cur.val);
            if(cur.left!=null)
            {
               q.offer(cur.left);
                tail=cur.left;
            }
            if(cur.right!=null)
            {
               q.offer(cur.right);
                tail=cur.right;
            }
            if(last==cur)
            {
                last=tail;
                arr1.add(new ArrayList(arr));
                arr.clear();
            }
        }
        return arr1;
        
    }
    
}