(三)、遍历

从给定图中任意指定的顶点(称为初始点)出发,按照某种搜索方法沿着图的边访问图中的所有顶点,使每个顶点仅被访问一次,这个过程称为图的遍历。如果给定图是连通的无向图或者是强连通的有向图,则遍历过程一次就能完成,并可按访问的先后顺序得到由该图的所有有顶点组成的一个序列。

  • 深度优先遍历(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;
}
}
}

数据结构(知识点碎片三十一)_深度优先遍历_02