欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

图的遍历(DFS)

程序员文章站 2022-03-03 11:27:18
...

深度优先遍历:(思想:递归)
1.访问顶点v;
2.选择一个与顶点v相邻且没有被访问过的顶点w,从w触发深度优先遍历;
3.知道图中的与v相邻的所有顶点都被访问过为止;
深度优先遍历的递归:

vis[max]={0};//全局变量用于记录顶点是否访问过 
void dfs(adjgraph *g,int v)
{
	int w;
	arcnode *p;
	printf("%d ",v);//访问v顶点 
	vis[v]=1;
	p=g->adjlist[v].firststarc;//找v的第一个邻接点 
	while(p!=NULL)//v的所有邻接点 
	{
		w=p->adjvex;
		if(vis[w]==0)//w未访问,从w开始深度优先遍历 
		{
			dfs(g,w); 
		}
		p=p->next;//找v的下一个邻接点 
	}
}