广度优先搜索(Breadth-First Search,简称BFS)是一种用于遍历或搜索树或图的算法。这个算法从图的某一顶点(源顶点)出发,访问最靠近源顶点的所有相邻顶点,然后对每个相邻顶点执行相同的操作,直到所有顶点都被访问为止。如果还存在未被访问的顶点,则选择其中一个作为源顶点并重复以上过程,整个进程反复进行直到所有顶点都被访问为止。
在BFS中,通常使用一个队列来存储待访问的顶点。以下是一个使用Java实现的广度优先搜索算法的基本框架:
java复制代码
import java.util.*; |
|
public class BFS { |
|
private int V; // 顶点数量 |
|
private LinkedList<Integer> adj[]; // 邻接表 |
|
// 构造函数 |
|
BFS(int v) { |
|
V = v; |
|
adj = new LinkedList[v]; |
|
for (int i=0; i<v; ++i) |