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