我正在尝试在加权有向图上实现递归深度优先遍历(但似乎我的输出总是关闭。如,我正在对节点进行额外访问。这就是我目前正在使用的:
void Dfs( int u, vector<bool> visited, vector < char > label, vector < vector < int > > adj)
{
visited[u] = true;
cout << label[u];
for ( int i = 0; i < (signed)visited.size(); i++)
{
if (visited[i] != true && adj[u][i] != 0)
{
cout << "->";
Dfs( i, visited, label, adj);
}
}
}
其中 label 是分配给顶点的字母(A = 0 等),visited 是一个向量,用于保存某个索引处的顶点是否已被访问,adj 是邻接矩阵。
假设我有一个图表,正确的深度优先搜索是 A->D->B->C->E,我最终得到的是 A->D->B->C->E->C-> B->E。如果它有帮助,对于这个例子,邻接矩阵看起来像:
| A B C D E
--|---------------
A | - - - 6 -
B | - - 8 3 2
C | - 8 - 7 -
D | 6 3 7 - -
E | - 2 - - -