在 C++ 中,可以使用递归函数来实现深度优先搜索(DFS)。下面是一个示例代码,演示了如何使用 DFS 来遍历一个图的所有节点:

#include <iostream>
#include <vector>

using namespace std;

// 定义图的邻接表表示
vector<vector<int>> adjList;

// 标记已访问的节点
vector<bool> visited;

// 深度优先搜索函数
void dfs(int node) {
    // 标记当前节点为已访问
    visited[node] = true;

    // 输出当前节点
    cout << node << ' ';

    // 遍历当前节点的所有邻接节点
    for (int neighbor : adjList[node]) {
        // 如果邻接节点未访问,则继续深度优先搜索
        if (!visited[neighbor]) {
            dfs(neighbor);
        }
    }
}

int main() {
    int numNodes, numEdges;
    cout << "请输入节点数和边数: ";
    cin >> numNodes >> numEdges;

    // 初始化邻接表和visited数组
    adjList.resize(numNodes);
    visited.resize(numNodes, false);

    cout << "请输入边的连接关系: " << endl;
    for (int i = 0; i < numEdges; i++) {
        int u, v;
        cin >> u >> v;

        // 添加边的连接关系到邻接表
        adjList[u].push_back(v);
        adjList[v].push_back(u);
    }

    // 从节点0开始进行深度优先搜索
    cout << "深度优先搜索结果: ";
    dfs(0);

    return 0;
}

这段代码首先通过输入获取图的节点数和边数,然后使用邻接表来表示图的连接关系。接下来,通过递归调用 dfs 函数来完成深度优先搜索的过程。最后,输出深度优先搜索的结果。

C++ 深度优先搜索 (DFS) 实现详解

原文地址: https://www.cveoy.top/t/topic/pPJ8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录