vlambda博客
学习文章列表

剑指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}



    你好!欢迎来到爪哇星球,期待在这里和你一起进步!欢迎关注、点赞、转发!