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 {
public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
if (pRoot == null){
return new ArrayList<>();
}
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
boolean flag = true;
queue.add(pRoot);
while (!queue.isEmpty()){
int length = queue.size();
flag = flag == true ? false : true;
ArrayList<Integer> nums = new ArrayList<>();
for (int i = 0; i < length; i++) {
TreeNode tmpNode = queue.poll();
if (tmpNode.left != null){
queue.add(tmpNode.left);
}
if (tmpNode.right != null){
queue.add(tmpNode.right);
}
nums.add(tmpNode.val);
}
if (flag){
Collections.reverse(nums);
}
res.add(nums);
}
return res;
}
}