public
class
Solution {
public
ArrayList<ArrayList<Integer> >
Print(TreeNode pRoot) {
return
levelorder(pRoot);
public
static
ArrayList<ArrayList<Integer>>
levelorder(TreeNode root) {
Queue
<TreeNode> queue =
new
LinkedList<>
();
ArrayList
<ArrayList<Integer>> result =
new
ArrayList<>
();
if
(root ==
null
)
return
result;
queue.offer(root);
//
首先将根节点root入队
int
level = 0;
//
记录层数
while
(!queue.isEmpty()) {
//
Queue不为空则循环
LinkedList<Integer> node =
new
LinkedList<>();
//
保存每一层节点的值
int
length = queue.size();
//
每一层的节点数目
while
(length > 0
) {
TreeNode tree
=
queue.poll();
if
(tree.left !=
null
) {
queue.offer(tree.left);
if
(tree.right !=
null
) {
queue.offer(tree.right);
if
((level+1)%2==0
){
node.addFirst(tree.val);
}
else
{
node.add(tree.val);
length
--
;
//
node为本层遍历结果
//
将linkedlist转成 ArrayList
ArrayList<Integer> arrayNode =
new
ArrayList<>
();
for
(Integer i: node) {
arrayNode.add(i);
result.add(arrayNode);
//
循环结束后,得到的Queue为下一层做准备,
level++
;
return
result;