102. 二叉树的层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层序遍历结果:
[
[3],
[9,20],
[15,7]
]
解析
我们使用一个队列去存储一层的节点,然后每次把queue.size() 数量的节点都访问一遍,依次把左子节点和右子节点都入队列,再循环取出。
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<>();
if(root==null) return res;
TreeNode head = root;
LinkedList<TreeNode> queue = new LinkedList<>();
queue.add(head);
while(!queue.isEmpty()){
int size = queue.size();
List<Integer> lst = new ArrayList<>();
for(int i = 0 ;i < size;i++){
head = queue.removeFirst();
lst.add(head.val);
if(head.left!=null) queue.add(head.left);
if(head.right!=null) queue.add(head.right);
}
res.add(lst);
}
return res;
}
}
注意:本文归作者所有,未经作者允许,不得转载