import java.util.ArrayList; import java.util.Queue; import java.util.concurrent.LinkedBlockingDeque;
/* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
} */ public class Solution { ArrayList<ArrayList > Print(TreeNode pRoot) { ArrayList<ArrayList> list = new ArrayList<>(); if(pRoot == null) return list;
ArrayList<Integer> tList;
Queue<TreeNode> queue = new LinkedBlockingDeque<>();
queue.add(pRoot);//先让根节点入队
// tList.add(pRoot.val); // list.add(tList);
while(!queue.isEmpty()) {
int size = queue.size();//此时队列中元素的个数就是这层树的结点的个数
tList = new ArrayList<>();
for(int i = 0;i < size;i++) {
//把树的左右子节点入队
if(queue.peek().left != null) queue.add(queue.peek().left);
if(queue.peek().right != null) queue.add(queue.peek().right);
tList.add(queue.poll().val);//把队列的收元素出队并加入到链表中
}
list.add(tList);
}
return list;
}
}