题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路:同从上向下打印二叉树思路,但是需要添加两个变量记录当前层未打印节点和下一层需要打印的节点
代码:
import java.util.ArrayList;
import java.util.Queue;
import java.util.LinkedList;
/*
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>> Alist=new ArrayList<ArrayList<Integer>>();
if(pRoot==null){
return Alist;
}
Queue<TreeNode> queue =new LinkedList();
queue.add(pRoot);
int toBePrint=queue.size();
int nextLevel=0;
while(!queue.isEmpty()){
ArrayList<Integer> aList=new ArrayList<Integer>();
while(toBePrint!=0){
if(queue.peek().left!=null){
queue.add(queue.peek().left);
nextLevel++;
}
if(queue.peek().right!=null){
queue.add(queue.peek().right);
nextLevel++;
}
aList.add(queue.poll().val);
toBePrint--;
}
Alist.add(aList);
toBePrint=nextLevel;
nextLevel=0;
}
return Alist;
}
}