我第一次尝试做 DFS,这是我想出的代码。 有人可以指导我为什么我的 DFS 代码是错误的吗?
void DFS(vector<vector<int>>& adj, vector<bool>& visited, int x) {
if (!visited[x]) {
visited[x] = true;
cout << x << " ";
for (int i = 0; i < adj[x].size(); i++) {
DFS(adj, visited, adj[x][i]);
}
}
}
最佳答案
您必须在退出节点之前重置您的已访问
。否则你只访问每个节点一次
在 if 条件的末尾,您需要添加 visited[x] = false
关于algorithm - DFS策略修正,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56920252/