Day10 图的深度优先遍历

Posted cc的心理活动

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day10 图的深度优先遍历相关的知识,希望对你有一定的参考价值。

图的深度优先遍历是另一种对图的遍历方式,如下中的图里,深度优先遍历的序列为:


A->B->F->C->D->E

即每次优先访问当前节点的邻接点。

dfs用递归表示代码很简单需要分成两个函数进行,dfstravel函数对顶点数组中未被访问过的节点依次执行dfs函数,在dfs函数中,首先对当前传入的节点遍历,再对未被遍历过的其为弧尾的弧的弧头递归调用dfs函数,类似树的先序遍历。

代码如下:


void DFS(Graph G, int v) { if (visited[v] == false) { visited[v] = true; cout << G.vexlist[v].name<< ' '; } edgeNode *w; for (w = G.vexlist[v].firstedge; w != NULL; w = w->nextEdge) { if (visited[w->head] == false) { DFS(G, w->head); } }}void DFStravel(Graph G){ for (int i = 1; i <= G.vexNum; i++) visited[i] = false; DFS(G, 1); for (int i = 1; i <= G.vexNum; i++) { if (visited[i] == false) { DFS(G, i); } }
}


以上是关于Day10 图的深度优先遍历的主要内容,如果未能解决你的问题,请参考以下文章

图的深度优先遍历(DFS)—递归算法

2023-03-30 图的深度优先遍历的应用

求图的深度优先遍历程序 c语言版

图的深度优先遍历DFS和广度优先遍历BFS(邻接矩阵存储)超详细完整代码进阶版

c语言图的遍历,邻接表存储,深度,广度优先遍历

什么是图的深度优先遍历?什么是图的广度优先遍历?