题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路:
仿之字打印矩阵,奇数层放奇数队列,偶数层放偶数队列.
代码:
代码语言:javascript复制ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> arrs=new ArrayList<>();
if (pRoot==null){
return arrs;
}
Queue<TreeNode> queue1=new LinkedList<>();
Queue<TreeNode> queue2=new LinkedList<>();
queue1.offer(pRoot);
while (!queue1.isEmpty()||!queue2.isEmpty()){
ArrayList<Integer> arr=new ArrayList<>();
if (!queue1.isEmpty())
{
while (!queue1.isEmpty()){
TreeNode node=queue1.poll();
if (node.left!=null){
queue2.offer(node.left);
}
if (node.right!=null){
queue2.offer(node.right);
}
arr.add(node.val);
}
}else
{
while (!queue2.isEmpty()){
TreeNode node=queue2.poll();
if (node.left!=null){
queue1.offer(node.left);
}
if (node.right!=null){
queue1.offer(node.right);
}
arr.add(node.val);
}
}
arrs.add(arr);
}
return arrs;
}