1. 深度优先遍历(Depth_First_Search DFS)
算法思路,访问顶点,对顶点的邻顶点依次进行深度优先遍历。
void DFS(GraphAdjList GL, int i)
{
EdgeNode *p;
visited[i] = TRUE;//顶点标记为已访问
printf()//输出顶点
p = GL->adjList[i].firstedge;
while(p)//遍历该顶点的邻顶点
{
if(!visied[p->adjvex])//如果顶点未被访问则对其进行DFS
DFS(GL, p->adjvex);
p = p->next;
}
}
2. 广度优先遍历 (Breadth_First_Search BFS)
与树的层次遍历思路基本一致
- 第一个顶点入队
- 队头的顶点的邻顶点入队
- 队头出队,回到第二步