核心思想
图的遍历指从图的任意一个顶点出发对图的每个顶点访问且仅访问一次的过程,因为图中可能存在回路,为了避免对一个顶点的重复访问可以增设一个辅助数组visited,初始化为0,一旦第i个顶点被访问,置visited[i]=1。因此,图的遍历需要考虑如下三点:
- 指定遍历的第一个顶点。
- 由于一个顶点和多个顶点相邻,需要在多个邻接顶点间确定访问次序。
- 由于图中存在回路,必须对访问过的顶点做标记,防止出现重复访问同一顶点的情况。
广度优先搜索算法(BFS)
核心思想
BFS遵循“先被访问的顶点,其邻接点先被访问”的规则,因此可以引入队列。
先将起始点加入队列中,以后每次从队列中删除一个数据元素,依次访问它的未被访问的邻接点,并将其插入到队列中,直到队列为空。
- 建立标识数组visited[n],并初始化为0,n为顶点个数
- 将未访问顶点vi入队
- 将队首元素顶点vi从队列中取出,依次访问它的未被访问的邻接点,并将其入队
- 重复步骤3,直到队列为空
- 改变i的值,跳到步骤2继续执行
代码实现
//导入包见参考类
import ch03.LinkQueue;
/**
* 广度优先搜索算法BFS(
* @para