本文主要是介绍数据结构(6.3_2)——图的深度优先遍历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
树的深度优先遍历
树的深度优先遍历分为先根遍历和后根遍历。
图的深度优先遍历
代码(只能遍历连通图)
//深度优先遍历
void DFS(Graph G, int v) {//从顶点v出发,深度优先遍历图Gvisit(v);//访问初始顶点vvisited[v] = true;//对v做已访问标记for (w = FirsitNeighbor(G, v); w >= 0; w = NextNeighbor(G, v, w);)//检查v所有邻接点if (!visited[w]) {//w为v的尚未访问的邻接点DFS(G, w);}
}
DFS算法(Final版)
代码
void DFSTraverse(Graph G) {//对图G进行深度优先遍历for (int v = 0; v < G.vexnum; ++v)visited[v] = false;//访问标记数组初始化for (int v = 0; v < G.vexnum; ++v)//从0号顶点开始遍历if (!visited[v])//对每个连通分量调用一次BFSDFS(G, v);//vi未访问过,从vi开始BFS}
//深度优先遍历
void DFS(Graph G, int v) {//从顶点v出发,深度优先遍历图Gvisit(v);//访问初始顶点vvisited[v] = true;//对v做已访问标记for (w = FirsitNeighbor(G, v); w >= 0; w = NextNeighbor(G, v, w);)//检查v所有邻接点if (!visited[w]) {//w为v的尚未访问的邻接点DFS(G, w);}
}
复杂度分析
空间复杂度
时间复杂度
深度优先遍历练习
深度优先生成树
深度优先生成森林
图的遍历和图的连通性
无向图
有向图
总结:
这篇关于数据结构(6.3_2)——图的深度优先遍历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!