题目描述
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层序遍历结果:
[
[3],
[9,20],
[15,7]
]
题解
public List<List<Integer>> levelOrder(TreeNode root) {
if (root==null){
return new ArrayList<>();
}
/*创建一个存储每层元素的一个数组*/
List<List<Integer>> list= new ArrayList<>();
Queue<TreeNode> queue=new LinkedList<>();
TreeNode node=root;
queue.add(node);
int count=0;
/*如果队列非空则一直循环*/
while(!queue.isEmpty()){
/*记录当前层的节点信息*/
LinkedList<Integer> temp = new LinkedList<>();
count=queue.size();
/*count用来判断当前层的节点有没有变空*/
while (count>0){
/*队首元素出队列*/
node=queue.poll();
temp.add(node.val);
if (node.left!=null){
queue.add(node.left);
}
if (node.right!=null){
queue.add(node.right);
}
count--;
}
list.add(temp);
}
return list;
}