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;
}
}
}
}