LC 102二叉树中等第 49 / 95 题

二叉树的层序遍历

Binary Tree Level Order Traversal

BFS队列
本机进度仅保存在当前浏览器

题目描述

给你二叉树的根节点 root,返回其节点值的层序遍历结果(逐层地,从左到右访问所有节点)。

示例:[3, 9, 20, null, null, 15, 7] 输出 [[3], [9, 20], [15, 7]]。

解题思路

  1. BFS 模板题:队列维护"当前层"节点,每轮记录队列长度(即本层节点数),逐个出队并把孩子入队。
  2. 关键点是"按层切分":处理前先固定 len(queue),避免新入队的孩子与本层混在一起。
  3. 变式(之字形遍历、自底向上)都只需在此骨架上加层号奇偶翻转或反转结果列表。

参考实现

查看参考实现Python · 建议先自行作答
from collections import deque

def levelOrder(root):
    if not root:
        return []
    res = []
    queue = deque([root])
    while queue:
        level = []
        # 先固定本层节点数,再逐个出队
        for _ in range(len(queue)):
            node = queue.popleft()
            level.append(node.val)
            if node.left:
                queue.append(node.left)
            if node.right:
                queue.append(node.right)
        res.append(level)
    return res

复杂度与归属

时间复杂度O(n)
空间复杂度O(n)
所属分类二叉树
题源LeetCode 102

关联教程

返回题图鉴