题目:
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:
给定二叉树: [3,9,20,null,null,15,7],
返回其层次遍历结果:
最终代码:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
int first=0,last=0;
List<List<Integer>> result=new ArrayList<List<Integer>>();
TreeNode queen[]=new TreeNode[10000];
if(root!=null){
queen[last++]=root;
}
while(first<last){
List<Integer> list=new ArrayList<Integer>();
for(int i=last-first-1;i>=0;i--){ //最精彩的地方:此处只在while循环的起始开始一次赋值操作,不能够正向循环,因为每次他的长度都会变化。
TreeNode pop=queen[first++];
list.add(Integer.valueOf(pop.val));
if(pop.left!=null){
queen[last++]=pop.left;
}
if(pop.right!=null){
queen[last++]=pop.right;
}
}
result.add(list);
}
return result;
}
}