题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路:
和之前“之字形”打印的思路基本类似,这次不需要再特别处理不同的打印顺序。
import java.util.*;
public class Solution {
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> result = new ArrayList<>();
if(pRoot==null)
return result;
int m = 1; // 每层的节点数
LinkedList<TreeNode> list = new LinkedList<>();
list.offer(pRoot);
while(list.size()!=0){
ArrayList<Integer> temp = new ArrayList<>();
while(m>0){
TreeNode a = list.poll();
temp.add(a.val);
if(a.left!=null)
list.offer(a.left);
if(a.right!=null)
list.offer(a.right);
m--;
}
m = list.size();
result.add(temp);
}
return result;
}
}