从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* *
队列LinkedList完成层序遍历,用end记录每层结点数目 */ public
class
Solution { ArrayList<ArrayList<Integer>
> Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>>
result = new
ArrayList<ArrayList<Integer>>(); if (pRoot
== null ){ return
result; } Queue<TreeNode>
layer = new
LinkedList<TreeNode>(); ArrayList<Integer>
layerList = new
ArrayList<Integer>(); layer.add(pRoot); int
start = 0 ,
end = 1 ; while (!layer.isEmpty()){ TreeNode
cur = layer.remove(); layerList.add(cur.val); start++; if (cur.left!= null ){ layer.add(cur.left); } if (cur.right!= null ){ layer.add(cur.right); } if (start
== end){ end
= layer.size(); start
= 0 ; result.add(layerList); layerList
= new
ArrayList<Integer>(); } } return
result; } } |