广度优先遍历(Breadth-First Search)
类似于对树的层序遍历
遍历规则为:首先访问初始点vi,并将其标记为已访问过,接着访问vi的所有未被访问过的邻接点,其访问次序可以任意,假定依次为vi1,vi2,...,vit,并均标记为已访问过,然后在按照vi1,vi2,...,vit的次序,访问每一个顶点的所有未被访问过的邻接点(次序任意),并均标记为已访问过,依次类推,直到图中所有和初始点vi有路径相通的顶点都被访问过为止。
在广度优先遍历中,先被访问的顶点,其邻接点亦先被访问,所以在算法的实现中需要使用一个队列,用来依次记住被访问过的顶点。从初始点vi出发广度优先遍历图的算法思想为:
(1)初始化队列Q;
(2)访问顶点vi,并将其标记为已访问,同时,顶点vi入队列Q;
(3)如果队列Q非空,重复执行步骤①、②和③:
① 出队列取得队首结点u;
② 取u第一个邻接点并赋予值给w;
③ 如果w存在,重复执行步骤a和b:
a 如果w未被访问,则访问w,并将其标记为访问,同时顶点w入队列Q;
b 取u的下一个邻接点并赋予值给w。
1.邻接矩阵存储结构下的广度优先遍历
2.邻接表存储结构下的广度优先遍历