思路:
ArrayList list存储每层结点,然后list作为单位元素存入ArrayList<ArrayList<>>中。
队列中每次循环存储下一层的所有结点。
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> > L = new ArrayList<ArrayList<Integer > >();
if(pRoot == null)
return L;
Queue<TreeNode> que = new LinkedList <TreeNode>();
//先进先出,将当前结点的左右孩子依次存入队列,队列中每次循环存储的
//是下一层树的结点
que.add(pRoot);
while(!que.isEmpty()){
ArrayList<Integer> list = new ArrayList <>();
int len = que.size();//控制层数,每次打印一层
for(int i = 0; i< len;i++){
TreeNode temp = que.poll();
list.add(temp.val);
if(temp.left!=null)
que.add(temp.left);
if(temp.right!= null)
que.add(temp.right);
}
L.add(list);//按层打印,一个list是一层
}
return L;
}
}