#102
Medium
BFS / DFS

Binary Tree Level Order Traversal

返回二叉树的层序遍历结果。

TreeBFS

题目定位

题目要求按层输出,而 BFS 天然就是按层展开,因此队列顺序和答案形状完全一致。

关键观察

队列中的一层就对应答案中的一层,所以处理当前层前要先固定这一层的节点数。

目标复杂度

O(n) / O(w)

这题的解法思路怎么拆

1

题目要求按层输出,而 BFS 天然就是按层展开,因此队列顺序和答案形状完全一致。

2

队列中的一层就对应答案中的一层,所以处理当前层前要先固定这一层的节点数。

3

先识别图模型,并定义邻居如何生成。

4

无权最短路优先 BFS,结构搜索优先 DFS。

参考实现

Python
# Generic pattern template
from collections import deque

def bfs(start):
    queue = deque([start])
    visited = {start}
    while queue:
        node = queue.popleft()
        for nxt in graph[node]:
            if nxt not in visited:
                visited.add(nxt)
                queue.append(nxt)

def dfs(node):
    visited.add(node)
    for nxt in graph[node]:
        if nxt not in visited:
            dfs(nxt)

常见坑点

warning

没有先固定当前层大小就直接继续入队孩子。

warning

把下一层节点混进了当前层答案。

高频追问

如果题目改成锯齿层序,怎么变?

能用 DFS 写出等价结果吗?

继续刷相关题

先把 BFS / DFS 这个模式刷成体系,再去做更难变体。

view_week回到模式页
LeetCode 102. Binary Tree Level Order Traversal 题解思路 | Interview AiBox