102_二叉树的层序遍历[MEDIUM]
约 279 字小于 1 分钟
2026-03-22
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1: 
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]解题思路
要求返回的是 List<List<Integer>> ,也就是每一层用一个 List 表示。
所以要在每一次循环前,查看当前队列里有多少个元素,这个数量就是这一层 List 的 size ,这一次就循环处理多少次。
Java实现
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> result = new ArrayList<>();
if (root == null) {
return result;
}
// 使用队列辅助进行广度优先搜索
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()) {
// 当前层的节点数
int levelSize = queue.size();
List<Integer> currentLevel = new ArrayList<>();
// 遍历当前层的所有节点
for (int i = 0; i < levelSize; i++) {
TreeNode currentNode = queue.poll();
currentLevel.add(currentNode.val);
// 将下一层的节点入队
if (currentNode.left != null) {
queue.offer(currentNode.left);
}
if (currentNode.right != null) {
queue.offer(currentNode.right);
}
}
// 将这一层的结果加入最终结果集
result.add(currentLevel);
}
return result;
}