从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
技巧:使用Null 作为层的分隔符号。
public class Solution {
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> lists = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
if(pRoot == null) return lists;
queue.offer(pRoot);
queue.offer(null);
while(queue.peek() != null){
ArrayList<Integer> list = new ArrayList<>();
TreeNode node = queue.poll();
while(node != null){
list.add(node.val);
if(node.left != null) queue.offer(node.left);
if(node.right != null) queue.offer(node.right);
node = queue.poll();
}
queue.offer(null);
lists.add(list);
}
return lists;
}
}
网友评论