在研究生考试中,图的深度优先搜索遍历和广度优先搜索遍历是重中之重,而通用的考试代码是C++,今天就站在考试的角度上,来分析一下这两种不同遍历。
深度优先遍历
- 图的深度优先遍历(DFS)类似于二叉树的先序遍历。基本思想是首先访问出发点V,并将其标记为已访问过;
- 然后选取与V邻接的未被访问的任意一个顶点w,访问它;
- 再选取与w邻接的未被访问的任一顶点访问,重复进行。
- 当邻接结点都被访问了的时候,依次退回到最近被访问过的顶点,若该顶点还有其他邻接顶点未被访问,从中选取一个重复上述的过程,直到所有的都被访问过为止。
实现代码:
int visit[maxsize]// v为起点编号,visit【】是全局数组,作为顶点的访问标记,初始元素全部都是0,表示所有顶点都未被访问。
void DFS(AGraph