码迷,mamicode.com
首页 > 其他好文 > 详细

剑指Offer:二叉树打印成多行【23】

时间:2018-07-17 00:11:05      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:evel   eve   rgs   nod   分析   width   com   描述   oid   

 剑指Offer:二叉树打印成多行【23】

题目描述

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

题目分析 

  技术分享图片

Java题解

package tree;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;

public class PrintByLevel {
    public static void main(String[] args) {
        TreeNode t1 = new TreeNode(1);
        TreeNode t2 = new TreeNode(2);
        TreeNode t3 = new TreeNode(3);
        TreeNode t4 = new TreeNode(4);
        TreeNode t5 = new TreeNode(5);
        t1.left=t2;
        t1.right=t3;
        t2.left=t4;
        t2.right=t5;
    }
    static ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer>> re = new ArrayList<>();
        if (pRoot==null)
            return re;

        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(pRoot);
        int nextLevel =0;
        int toBePrinted = 1;
        ArrayList<Integer> cuLevel = new ArrayList<>();

        while (!queue.isEmpty())
        {
            TreeNode tmp = queue.poll();
            cuLevel.add(tmp.val);
            if(tmp.left!=null)
            {
                queue.add(tmp.left);
                nextLevel++;
            }
            if(tmp.right!=null)
            {
                queue.add(tmp.right);
                nextLevel++;
            }
            toBePrinted--;
            if(toBePrinted==0)
            {
                re.add(cuLevel);
                cuLevel = new ArrayList<>();
                toBePrinted = nextLevel;
                nextLevel=0;
            }

        }
        return re;
    }
}

  

 

剑指Offer:二叉树打印成多行【23】

标签:evel   eve   rgs   nod   分析   width   com   描述   oid   

原文地址:https://www.cnblogs.com/MrSaver/p/9321112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!