剑指offer60
把二叉树打印成多行
题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路
思路同59,利用两个队列实现
代码
import java.util.ArrayList;
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
import java.util.*;
public class Solution {
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
int layer = 1;
Queue<TreeNode> queue1 = new LinkedList<>();
Queue<TreeNode> queue2 = new LinkedList<>();
queue1.offer(pRoot);
ArrayList<ArrayList<Integer> > res = new ArrayList<ArrayList<Integer> >();
while(!queue1.isEmpty() || !queue2.isEmpty()){
ArrayList<Integer> temp = new ArrayList<Integer>();
if(layer%2!=0){
while(!queue1.isEmpty()){
TreeNode node = queue1.poll();
if(node!=null){
temp.add(node.val);
queue2.offer(node.left);
queue2.offer(node.right);
}
}
}else{
while(!queue2.isEmpty()){
TreeNode node = queue2.poll();
if(node!=null){
temp.add(node.val);
queue1.offer(node.left);
queue1.offer(node.right);
}
}
}
if(!temp.isEmpty()){
res.add(temp);
layer++;
}
}
return res;
}
}
/*
思路同59,利用两个队列实现
*/