题目
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
代码
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
if(root == null){
return new ArrayList<List<Integer>>();
}
List<List<Integer>> allList = new ArrayList<List<Integer>>();
List<Integer> list = new ArrayList<Integer>();
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.offer(root);
TreeNode last = root;
TreeNode nLast = null;
while(!queue.isEmpty()){
TreeNode head = queue.poll();
list.add(head.val);
if(head.left != null){
queue.offer(head.left);
nLast = head.left;
}
if(head.right != null){
queue.offer(head.right);
nLast = head.right;
}
if(head == last && !queue.isEmpty()){
last = nLast;
allList.add(list);
list = new ArrayList<Integer>();
}
}
allList.add(list);
return allList;
}
}