我第一次尝试做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]);
}
}
}
答案 0 :(得分:1)
您必须在退出节点之前重设visited
。否则,您只能访问每个节点一次
在if条件的末尾,您需要添加visited[x] = false