(三)、遍历
从给定图中任意指定的顶点(称为初始点)出发,按照某种搜索方法沿着图的边访问图中的所有顶点,使每个顶点仅被访问一次,这个过程称为图的遍历。如果给定图是连通的无向图或者是强连通的有向图,则遍历过程一次就能完成,并可按访问的先后顺序得到由该图的所有有顶点组成的一个序列。
- 深度优先遍历(DFS)
void DFS(int v, AGraph *G)//树的顶点v
{
visit[v] = 1;
Visit(v);
ArcNode* q = G->adjList[v].first
while(q != NULL)
{
if(visit[q->adjV] -- 0)
DFS(q->adjV,G);
q = q->next;
}
}
- 广度优先遍历(BFS)
void BFS (AGraph *G, int v, int visit[maxSize])//树的顶点
{
ArcNode *p;
int que[maxSize],front=0, rear=0;
int j;
Visit(v);
visit[v] =1;
rear = (rear +1)%maxSize;
que[rear] = v;
while(front!= rear)
{
front = (front+1)%maxSize;
j= que[front];
p = G->adjlist[j].first;
while(p != NULL)
{
if(visit{p->adjv]= 0)
{
Visit(p->adjV);
visitlp->adjV] = 1;
rear = (rear+1)%maxSize;
que [rear] = p->adjv;
}
p = p->next;
}
}
}