题目:
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路:
二叉树的层次遍历,然后将每一层的结点单独打印到一行。
代码:
import java
.util
.ArrayList;
import java
.util
.Queue;
import java
.util
.LinkedList;
public class Solution {
ArrayList
<ArrayList
<Integer> > Print(TreeNode pRoot) {
ArrayList
<ArrayList
<Integer> > result
= new ArrayList
<ArrayList
<Integer> >();
if(pRoot
== null)
return result;
Queue<TreeNode
> queue = new LinkedList
<TreeNode
>();
queue.offer(pRoot);
int nextLevel
= 0;
int toBePrinted
= 1;
ArrayList
<Integer> temp
= new ArrayList
<Integer>();
while(
!queue.isEmpty()){
TreeNode pNode
= queue.poll();
temp
.add(pNode
.val);
if(pNode
.left
!= null){
queue.offer(pNode
.left);
++ nextLevel;
}
if(pNode
.right
!= null){
queue.offer(pNode
.right);
++ nextLevel;
}
--toBePrinted;
if(toBePrinted
== 0){
result
.add(temp);
temp
= new ArrayList
<Integer>();
toBePrinted
= nextLevel;
nextLevel
= 0;
}
}
return result;
}
}