返回首页

BFS:层序遍历(树与图)

一、面试常考点

1. 层序遍历模板

每轮先记录当前队列长度,保证同层一起处理。

2. 变体

锯齿层序、右视图、每层最大值。

二、细节介绍

1. 树层序

天然无环,但仍注意空节点判断。

2. 图层序

必须加 visited 防回路。

三、示例代码

function levelOrder(root) {
  if (!root) return []
  const res = []
  const queue = [root]

  while (queue.length) {
    const size = queue.length
    const level = []
    for (let i = 0; i < size; i++) {
      const node = queue.shift()
      level.push(node.val)
      if (node.left) queue.push(node.left)
      if (node.right) queue.push(node.right)
    }
    res.push(level)
  }

  return res
}

四、常用应用场景

1. 组织架构分层展示

按层渲染树结构。

2. 传播模拟

消息逐层扩散过程。