BFS 是那种「面试前觉得自己会、真上手写又卡住」的算法。它的框架只有几行,可一旦套进连通块、最短路径、拓扑排序这些变形里,边界条件和入队时机就开始出错。这门课不打算把 BFS 从头讲一遍,它假设你已经能默写队列版模板,然后把重点放在「知道模板却做不对题」这段落差上。

先确认你要不要看这门课

如果你现在的情况是下面任意一种,这三天的时间花得值:

  • 刷过 BFS 的入门题,但一遇到网格之外的图结构就不知道从哪开始建图;
  • 分不清什么时候用 BFS、什么时候该上 DFS,凭感觉选;
  • 拓扑排序会背模板,但题目换个问法(判断环、求字典序最小、分层输出)就写不出来;
  • 面试里被追问「为什么 BFS 第一次到达就是最短」时,只能含糊带过。

反过来,如果你连队列、图的邻接表表示都还没写熟,这门课节奏会偏快,建议先把基础数据结构的代码量补上再来。

三天的时间大致怎么分

课程按考点切块,而不是按知识点顺序平铺。连通块部分解决的是「一片区域有多少个独立部分、每个部分有多大」这类问题,重点是 BFS 的启动条件和访问标记的时机——这两处写错,答案会静默地偏,不报错但不对。

最短路径部分主要针对边权相同或为 1 的图。这里真正值得抠的是「层级」的概念:BFS 一层一层往外扩,第一次碰到目标时的层数就是最短距离,这个直觉必须能自己讲清楚,而不是背结论。课程会把它和层级遍历放在一起对照,顺便带出多源 BFS 这种变形——多个起点同时入队,很多「离最近的点有多远」的题都是这个套路。

拓扑排序单独占一块,并且明确列了五个考点。这一块的价值在于它把 BFS 从「遍历」推到了「依赖关系处理」:入度统计、入队顺序、如何判断图中有环、如何按要求输出顺序。真题实战部分会把这些串起来,看的是怎么从题目描述里识别出该用哪套框架,而不是直接告诉你用 BFS。

配套练习该怎么用

三天攻克的节奏意味着每天都要有实际敲代码的时间,只看讲解不写会白学。建议每个考点结束后先合上讲解自己写一遍,再对照。特别留意两件事:一是访问标记到底在入队时打还是出队时打,二是多源场景下初始队列怎么塞。这两处在不同题目里有不同答案,靠背是记不住的,得靠错几次形成条件反射。

拓扑排序那五个考点建议逐个手写,尤其是判环和字典序输出,它们在面试里出现的频率比裸模板高得多。

看完你应该能回答这些问题

  • 为什么在边权相同的图里,BFS 第一次访问到某点时的距离就是最短距离?
  • 网格、邻接表、隐式状态图这三种输入形式,建图方式各有什么差别,什么时候不需要显式建图?
  • 多源 BFS 相比跑多次单源 BFS,复杂度上省在哪里?
  • 拓扑排序过程中如果队列提前空了,说明什么?怎么据此判断有向图是否有环?
  • 同一道题改一个条件后,为什么原来的 BFS 框架就不成立了,需要加什么状态?

如果这些问题你现在答不全,说明缺口正好在这门课覆盖的范围内。带着具体的问题去看,比从头听一遍效率高得多。

3天攻克BFS宽度优先搜索2025

课程详情

课程标题

3天攻克BFS宽度优先搜索2025

课程介绍

北大算法大牛令狐冲亲授,大中小厂都爱考的高频考点之BFS宽度优先搜索。

课程内容

  • BFS连通块问题
  • 简单图最短路径问题
  • 图的层级遍历与简单图最短路径问题
  • 拓扑排序的五个考点
  • 拓扑排序
  • 真题实战详解

适合人群

- 算法爱好者 - 准备面试的程序员 - 对BFS算法有深入理解需求的开发者

学习收获

- 掌握BFS宽度优先搜索算法的核心原理 - 熟悉BFS在连通块问题、最短路径问题、拓扑排序中的应用 - 提高解决实际问题的能力 - 增强面试竞争力