广度优先遍历(BFS)是一种按层级逐层访问节点的图或树遍历算法,核心思想是“先访问相邻节点,再深入下一层”。其关键亮点包括:队列辅助、无回溯、适合最短路径问题。
-
算法流程
广度优先遍历从起点出发,按以下步骤执行:- 将起点加入队列并标记为已访问;
- 循环取出队首节点,访问其所有未访问的相邻节点,依次入队并标记;
- 重复上述过程直到队列为空。
-
数据结构与复杂度
- 使用队列(FIFO)保证访问顺序,时间复杂度为O(V+E)(V为顶点数,E为边数);
- 空间复杂度为O(V),需存储访问状态和队列。
-
应用场景
- 最短路径:在无权图中,BFS天然保证找到的路径边数最少;
- 层级分析:社交网络中的好友推荐、网页爬虫的层级抓取;
- 连通性检测:判断图中两点是否连通。
-
与深度优先遍历(DFS)对比
- BFS逐层扩展,适合目标节点较近的情况;
- DFS优先深入,可能更快找到深层节点,但无法保证路径最短。
广度优先遍历通过队列实现高效层级搜索,是解决最短路径和网络分层问题的首选算法,适合需要“由近及远”遍历的场景。