剑指Offer-60 把二叉树打印成多行
题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
输入:{8,6,10,5,7,9,11}
输出:[[8],[6,10],[5,7,9,11]]
解析
非常标准的模板题了,在涉及bfs和层次遍历的题目中,本题就是最标准的模板,应该熟练的“默写”。
完成一个树的层次遍历的操作,我们需要使用到一个队列的结构,利用队列结构“先进先出”的特性,我们从头取出元素,之后在尾部添加该元素的左右结点,直到队列中的元素全部便利完成。
1public class Solution {
2 ArrayList<ArrayList<Integer> > res;
3 ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
4 res=new ArrayList<>();
5 if(pRoot==null)
6 return res;
7 Queue<TreeNode> queue=new LinkedList<>();
8 queue.add(pRoot);
9 while(!queue.isEmpty()){
10 int size=queue.size();
11 ArrayList<Integer> al=new ArrayList<>();
12 for(int i=0;i<size;i++){
13 TreeNode temp=queue.poll();
14 al.add(temp.val);
15 if(temp.left!=null)
16 queue.add(temp.left);
17 if(temp.right!=null){
18 queue.add(temp.right);
19 }
20 }
21 res.add(new ArrayList<>(al));
22 }
23 return res;
24 }
25}
你好!欢迎来到爪哇星球,期待在这里和你一起进步!欢迎关注、点赞、转发!