遍历
广度优先搜索-BFS
1.访问图中某顶点v;
2.依次访问v的各个未曾访问过的邻接点,依次将访问的这些邻接点作为当前顶点;
3.重复上述过程,直至图中所有顶点都被访问到为止
int top=1,low=0;
void bfs(int t)
{
low++;
int j;
for(j=0;j<k;j++)
{
if(map[t][j]==1&&visit[j]==0)
{
q[top]=j;
top++;
visit[j]=1;
}
}
if(low<=top) fbs(q[low]);
}
深度优先搜索-DFS
1.访问某个顶点v出发
2.依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被访问到。 若此时尚有其他顶点未被访问到,则另选一个未被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。
void dfs(int t)
{
int i;
if(t==0) printf("%d",t);
else printf(" %d",t);
visit[t]=1;
for(i=0;i<k;i++)
{
if(map[t][i]==1&&visit[i]==0)
{
dfs(i);
}
}
}