深度优先搜索(DFS)算法思想及算法解析

算法思想:

  深度优先搜索算法类似于树的先序遍历。首先访问起始顶点,然后从起始顶点出发,访问与起始顶点邻接且未被访问的任一顶点,在访问与该顶点邻接且未被访问的任一顶点,重复上述过程,当不能再继续向下访问时,依次退回到最近被访问的顶点,若他还有邻接顶点为访问,则从该点开始继续上述搜索过程,直至图中所有顶点访问完为止。

深度优先搜索算法伪代码如下:

/*-----------------深度优先搜索-------------------*/
int visited[MaxSize];		//访问标记数组
void DFSTraverse(Graph G)
{//对图G进行深度优先遍历
	for(int i=0;i<G.vexnum;i++)
		visited[i]=0;				//初始化访问标记数组
	for(int i=0;i<G.vexnum;i++)
		if(!visited[i])
			DFS(G,i);
}
void DFS(Graph G,int v)
{//从顶点v出发深度优先遍历图G
	visit(v);			//访问顶点v
	visited[v]=1;		//更改已访问标记
	for(int w=FirstNeighbor(G,v);w>=0;w=NextNeighbor(G,v,w))
		if(!visited[w])
			DFS(G,w);
}
/*-----------------------------------------------*/

你可能感兴趣的:(数据结构,深度优先,算法,图论,c语言,数据结构)