二叉树的层序遍历
2024年8月6日约 220 字小于 1 分钟
二叉树的层序遍历
题意
给你二叉树的根节点 root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
思路
二叉树层序遍历使用 BFS 实现。
使用队列存储每一层的节点,逐层遍历,取出遍历到的节点,并将该节点的左右子节点继续存到队列中进行下一层遍历,重复上述步骤即可。
代码
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
if (root == null) return List.of();
List<List<Integer>> ans = new ArrayList<>();
Queue<TreeNode> q = new LinkedList<>();
q.offer(root);
while (!q.isEmpty()){
int n = q.size();
List<Integer> list = new ArrayList<>(n); // 预分配空间
while (n-- > 0){
TreeNode node = q.poll();
list.add(node.val);
if (node.left != null) q.offer(node.left);
if (node.right != null) q.offer(node.right);
}
ans.add(list);
}
return ans;
}
}