题目描述
给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
该二叉树层序遍历的结果是
[ [3], [9,20], [15,7] ]
示例图如下:
代码如下:
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
/**
*
* @param root TreeNode类
* @return int整型ArrayList<ArrayList<>>
*/
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
//声明一个ArrayList集合用于存值
ArrayList<ArrayList<Integer>> arr =newArrayList<>();
//声明队列链表
Queue<TreeNode> queue=new LinkedList<>();
//根节点不为空
if(root==null){
return arr;
}
//放入根节点(一个数相当于一个节点对象)
queue.offer(root);
//队列不为空
while(!queue.isEmpty()){
ArrayList<Integer> list=new ArrayList<>();
//当前层的节点个数
int count=queue.size();
while(count-->0){
//个数为n,执行n次
//弹出先进来的节点
TreeNode node= queue.poll();
list.add(node.val);//把节点值放list
//如果上一个节点指向的下一个左节点不为空
if(node.left!=null){
//把左节点放入队列中
queue.offer(node.left);
}
if(node.right!=null){
queue.offer(node.right);
}
}
arr.add(list);
}
return arr;
}
}