algorithm - DFS策略修正

标签 algorithm depth-first-search

我第一次尝试做 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/

相关文章:

algorithm - 找到一个线性时间算法,对区间 [0,2] 中的 n 个数字进行排序,使得对于每 2 个数字 a,b : |a-b| > (1/n)^2

algorithm - 翻转卡片组的最少步骤数

javascript - 递归展平一组数组的算法

algorithm - 如何输出无向图的所有双连通分量?

java - 深度优先搜索给出错误的输出

string - 通过后缀数组 : do we really need unique sentinels? 的最长公共(public)子串

Java合并相邻的数组元素以产生最大最小值

c# - 对 DFS 和 BFS 程序有用的 C# 类/方法

algorithm - 无向图中的前向边

Python:我的深度限制搜索算法不起作用