(剑指Offer)面试题61:把二叉树打印成多行

来源:互联网 发布:知乎 歼20 2021 编辑:程序博客网 时间:2024/05/24 01:39

题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

思路分析:
这道题和剑指offer 的60题很像,但是比60题要简单。
使用队列从左到右来保存每一层的节点,用队列的长度size来表示每一层需要打印的节点个数,通过更新size来实现每一层的遍历。

import java.util.*;/*public class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val) {        this.val = val;    }}*/public class Solution {    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {        ArrayList<ArrayList<Integer>> lists = new  ArrayList<ArrayList<Integer>>();        if(pRoot ==null){            return lists;        }        Queue<TreeNode> queue = new LinkedList<>();         TreeNode tmp = null;        queue.offer(pRoot);        while(!queue.isEmpty()){            int size = queue.size();            ArrayList<Integer> list = new ArrayList<>();            while(size -- >0){                  tmp = queue.poll();                list.add(tmp.val);            if(tmp.left!=null){                queue.offer(tmp.left);            }            if(tmp.right!= null){                queue.offer(tmp.right);            }            }          //更新size            size = queue.size();            lists.add(list);        }     return lists;    }
阅读全文
0 0
原创粉丝点击