把二叉树打印成多行

来源:互联网 发布:淘宝店人气 编辑:程序博客网 时间:2024/06/15 02:21

题目:

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

思路:

二叉树的层次遍历,然后将每一层的结点单独打印到一行。

代码:

import java.util.ArrayList;import java.util.Queue;import java.util.LinkedList;/*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> > result = new ArrayList<ArrayList<Integer> >();        if(pRoot == null) return result;        Queue<TreeNode> queue = new LinkedList<TreeNode>();        queue.offer(pRoot);        int nextLevel = 0;//下一层有多少个结点        int toBePrinted = 1;//目前打印的结点还剩多少个        ArrayList<Integer> temp = new ArrayList<Integer>();        while(!queue.isEmpty()){            TreeNode pNode = queue.poll();            temp.add(pNode.val);            if(pNode.left != null){                queue.offer(pNode.left);                ++ nextLevel;            }            if(pNode.right != null){                queue.offer(pNode.right);                ++ nextLevel;            }            --toBePrinted;            if(toBePrinted == 0){                result.add(temp);                temp = new ArrayList<Integer>();                toBePrinted = nextLevel;                nextLevel = 0;            }        }        return result;    }}