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; } }