题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
[把二叉树打印成多行](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<>(); Queuequeue
=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>
關鍵字: ta 暂存 interviews