直接回答:层序遍历是标准的广度优先搜索:用队列存放待访问节点,初始压入根节点;每轮从队首取出节点、记录值,再把它非空的左右孩子依次入队,直到队列为空。若要求按层分组输出,就在每轮开始时记录队列长度,一次性处理该长度的所有节点。

展开解析:时间 O(n)、空间 O(n)(最满一层约 n/2 个节点)。层序遍历看似简单,却是大量树题的骨架:求二叉树最大深度(层数)、右视图(每层最后一个节点)、层平均值、之字形(锯齿)遍历(偶数层翻转或双端队列)、找每层最大值,都是在基础模板上加一行统计逻辑。与 DFS 三种深度优先遍历的对照也常考:层序必须用队列迭代,模拟递归的调用栈解决不了「按层」这个需求。追问方向:如何用层序思想做二叉树的序列化、N 叉树层序遍历的差别(孩子列表逐个入队)。

示例

from collections import deque

def level_order(root):
    if not root:
        return []
    result, 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)
        result.append(level)
    return result