Ideas analysis
Follow the previous question "binary zigzag print the order," the idea of tiered with two queues, a queue is empty when the means to traverse this layer is over.
Title Description
Printing the binary tree in layers from top to bottom, from left to right with the output layer node. Each line of output layer.
Java code:
import java.util.ArrayList;
import java.util.Queue;
import java.util.LinkedList;
public class Solution {
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer> > res=new ArrayList<>();
Queue<TreeNode> que1=new LinkedList<>();
Queue<TreeNode> que2=new LinkedList<>();
que1.offer(pRoot);//Stack,Queue都能用isEmpty()判空
while(!que1.isEmpty()||!que2.isEmpty()){
ArrayList<Integer> tmp1=new ArrayList<Integer>();
ArrayList<Integer> tmp2=new ArrayList<Integer>();
while(!que1.isEmpty()){//队列为空,即遍历了一层结点
TreeNode node=que1.poll();
if(node!=null){
tmp1.add(node.val);
que2.offer(node.left);
que2.offer(node.right);
}
}
if(!tmp1.isEmpty()){
res.add(tmp1);
}
while(!que2.isEmpty()){
TreeNode node=que2.poll();
if(node!=null){
tmp2.add(node.val);
que1.offer(node.left);
que1.offer(node.right);
}
}
if(!tmp2.isEmpty()){
res.add(tmp2);
}
}
return res;
}
}