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); // 将未访问的邻居加入队列 } } } }
浙公网安备 33010602011771号