以下是一个深度优先搜索遍历无向图的示例代码:

#include <iostream>
#include <vector>

using namespace std;

void DFS(vector<vector<int>>& graph, int node, vector<bool>& visited) {
    visited[node] = true;
    cout << node << " ";

    for (int i = 0; i < graph[node].size(); i++) {
        int neighbor = graph[node][i];
        if (!visited[neighbor]) {
            DFS(graph, neighbor, visited);
        }
    }
}

void traverseGraph(vector<vector<int>>& graph) {
    int n = graph.size();
    vector<bool> visited(n, false);

    for (int i = 0; i < n; i++) {
        if (!visited[i]) {
            DFS(graph, i, visited);
        }
    }
}

int main() {
    vector<vector<int>> graph = {{1, 2}, {0, 2}, {0, 1, 3}, {2, 4}, {3}};
    traverseGraph(graph);
    return 0;
}

该代码创建了一个无向图,其中节点0与节点1、2相连,节点1与节点0、2相连,节点2与节点0、1、3相连,节点3与节点2、4相连,节点4与节点3相连。首先,我们定义了一个DFS函数,用于深度优先搜索遍历图。该函数接收三个参数:图、当前节点以及访问状态数组。它首先将当前节点标记为已访问,并打印该节点。然后,它遍历所有与该节点相邻的节点,如果一个节点未被访问,则递归调用DFS函数,以遍历该节点及其子树。接下来,我们定义了一个traverseGraph函数,它遍历所有未访问的节点,并调用DFS函数进行搜索。最后,我们在main函数中创建了一个图,并调用traverseGraph函数进行遍历。

用c++写一个图的遍历算法

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

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