编程题 :把二叉树打印成多行

题目描述

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

[把二叉树打印成多行](https://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288?tpId=13&tqId=11213&tPage=3&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking)

解题思路

使用一个ArrayList>保存各层次节点

Queue 暂存下一层节点

循环部分:

使用变量levelNum 暂存queue当前层的节点数目

每次获取queue队列顶部的节点,从左到右遍历

同时使用tmpList保存每一层的数据,添加到resultList中

最后返回结果

代码实现

<code>

import

java.util.ArrayList;

import

java.util.LinkedList;

import

java.util.Queue;

class

TreeNode

{

int

val =

0

; TreeNode left = null; TreeNode right = null;

public

TreeNode

(

int

val)

{

this

.val = val; } }

public

class

Solution

{

ArrayList > Print(TreeNode pRoot) { ArrayList> resultList =

new

ArrayList<>(); Queue

queue

=

new

LinkedList<>();

if

(pRoot == null) {

return

resultList; }

int

levelNum =

0

;

queue

.add(pRoot);

while

(!

queue

.isEmpty()){ levelNum =

queue

.size(); ArrayList tmpList =

new

ArrayList<>();

while

(levelNum >

0

){ TreeNode tmpNode =

queue

.remove();

if

(tmpNode != null){ tmpList.add(tmpNode.val);

queue

.add(tmpNode.left);

queue

.add(tmpNode.right); } levelNum--; }

if

(tmpList.size() >

0

){ resultList.add(tmpList); } }

return

resultList; } }/<code>
牛客_剑指Offer_编程题 :把二叉树打印成多行


分享到:


相關文章: