1 void dfs(const vector<vector<int>>& graph, int node, unordered_set<int>& visited) {
 2     // 标记当前节点为已访问
 3     visited.insert(node);
 4     cout << node << " ";  // 可以在这里进行其他操作,如打印节点
 5 
 6     // 遍历当前节点的所有邻居
 7     for (int neighbor : graph[node]) {
 8         if (visited.find(neighbor) == visited.end()) {
 9             dfs(graph, neighbor, visited);
10         }
11     }
12 }

 

void bfs(const vector<vector<int>>& graph, int startNode) {
    unordered_set<int> visited;  // 用于记录已访问的节点
    queue<int> q;                // 队列用于存储待访问的节点

    visited.insert(startNode);  // 标记起始节点为已访问
    q.push(startNode);          // 将起始节点加入队列

    while (!q.empty()) {
        int node = q.front();  // 获取队列中的第一个节点
        q.pop();               // 从队列中移除该节点

        cout << node << " ";    // 可以在这里进行其他操作,如打印节点

        // 遍历当前节点的所有邻居
        for (int neighbor : graph[node]) {
            if (visited.find(neighbor) == visited.end()) {
                visited.insert(neighbor);
                q.push(neighbor);  // 将未访问的邻居加入队列
            }
        }
    }
}

 

posted on 2025-04-12 19:03  一抹烟霞  阅读(11)  评论(0)    收藏  举报

Live2D