DFS策略修正
Correction in DFS Strategy
我第一次尝试做 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]);
}
}
}
您必须在退出节点之前重置您 visited
。否则你只访问每个节点一次
在if条件的末尾你需要添加visited[x] = false
我第一次尝试做 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]);
}
}
}
您必须在退出节点之前重置您 visited
。否则你只访问每个节点一次
在if条件的末尾你需要添加visited[x] = false