BFS 是那种「面试前觉得自己会、真上手写又卡住」的算法。它的框架只有几行,可一旦套进连通块、最短路径、拓扑排序这些变形里,边界条件和入队时机就开始出错。这门课不打算把 BFS 从头讲一遍,它假设你已经能默写队列版模板,然后把重点放在「知道模板却做不对题」这段落差上。
先确认你要不要看这门课
如果你现在的情况是下面任意一种,这三天的时间花得值:
- 刷过 BFS 的入门题,但一遇到网格之外的图结构就不知道从哪开始建图;
- 分不清什么时候用 BFS、什么时候该上 DFS,凭感觉选;
- 拓扑排序会背模板,但题目换个问法(判断环、求字典序最小、分层输出)就写不出来;
- 面试里被追问「为什么 BFS 第一次到达就是最短」时,只能含糊带过。
反过来,如果你连队列、图的邻接表表示都还没写熟,这门课节奏会偏快,建议先把基础数据结构的代码量补上再来。
三天的时间大致怎么分
课程按考点切块,而不是按知识点顺序平铺。连通块部分解决的是「一片区域有多少个独立部分、每个部分有多大」这类问题,重点是 BFS 的启动条件和访问标记的时机——这两处写错,答案会静默地偏,不报错但不对。
最短路径部分主要针对边权相同或为 1 的图。这里真正值得抠的是「层级」的概念:BFS 一层一层往外扩,第一次碰到目标时的层数就是最短距离,这个直觉必须能自己讲清楚,而不是背结论。课程会把它和层级遍历放在一起对照,顺便带出多源 BFS 这种变形——多个起点同时入队,很多「离最近的点有多远」的题都是这个套路。
拓扑排序单独占一块,并且明确列了五个考点。这一块的价值在于它把 BFS 从「遍历」推到了「依赖关系处理」:入度统计、入队顺序、如何判断图中有环、如何按要求输出顺序。真题实战部分会把这些串起来,看的是怎么从题目描述里识别出该用哪套框架,而不是直接告诉你用 BFS。
配套练习该怎么用
三天攻克的节奏意味着每天都要有实际敲代码的时间,只看讲解不写会白学。建议每个考点结束后先合上讲解自己写一遍,再对照。特别留意两件事:一是访问标记到底在入队时打还是出队时打,二是多源场景下初始队列怎么塞。这两处在不同题目里有不同答案,靠背是记不住的,得靠错几次形成条件反射。
拓扑排序那五个考点建议逐个手写,尤其是判环和字典序输出,它们在面试里出现的频率比裸模板高得多。
看完你应该能回答这些问题
- 为什么在边权相同的图里,BFS 第一次访问到某点时的距离就是最短距离?
- 网格、邻接表、隐式状态图这三种输入形式,建图方式各有什么差别,什么时候不需要显式建图?
- 多源 BFS 相比跑多次单源 BFS,复杂度上省在哪里?
- 拓扑排序过程中如果队列提前空了,说明什么?怎么据此判断有向图是否有环?
- 同一道题改一个条件后,为什么原来的 BFS 框架就不成立了,需要加什么状态?
如果这些问题你现在答不全,说明缺口正好在这门课覆盖的范围内。带着具体的问题去看,比从头听一遍效率高得多。
3天攻克BFS宽度优先搜索2025
课程详情
课程标题
3天攻克BFS宽度优先搜索2025课程介绍
北大算法大牛令狐冲亲授,大中小厂都爱考的高频考点之BFS宽度优先搜索。课程内容
- BFS连通块问题
- 简单图最短路径问题
- 图的层级遍历与简单图最短路径问题
- 拓扑排序的五个考点
- 拓扑排序
- 真题实战详解





