int n; //結點個數
int mp[N][N]; //鄰接矩陣
int vis[N]; //記錄此頂點是否遍歷過;
DFS
void DFS(int x)
{
int i;
countt++;
if(countt==1)
printf("%d",x);
else
printf(" %d",x);
for(i=0;i<n;i++) //遍歷所有頂點
{
if(vis[i]==0&&mp[x][i]==1)
{
vis[i]=1;
DFS(i);
}
}
}
BFS
隊列思想,和層序遍歷差不多
void BFS(int x)
{
int i;
queue <int>Q;
vis[x]=1;
Q.push(x);
int countt=0;
while(!Q.empty())
{
int f=Q.front();
countt++;
if(countt==1)
printf("%d",f);
else
printf(" %d",f);
Q.pop();
for(i=0;i<n;i++)
{
if(vis[i]==0&&mp[f][i]==1)
{
Q.push(i);
vis[i]=1;
}
}
}
}