用c++写出深度优先遍历代码
时间: 2024-11-22 18:25:32 浏览: 22
深度优先遍历(Depth-First Search, DFS)是一种用于遍历或搜索树或图的数据结构算法。在C++中,我们可以使用递归或栈数据结构来实现DFS。以下是使用递归实现的基本深度优先遍历(假设我们有一个无向图,存储在邻接列表中,`adjList`是一个邻接表表示图的map,`visited`记录已访问节点):
```cpp
#include <iostream>
#include <unordered_map>
void dfs(const std::unordered_map<int, std::vector<int>>& adjList, int node, bool visited[]) {
if (visited[node]) return; // 如果已经访问过,则跳过
visited[node] = true;
std::cout << node << " "; // 访问当前节点
for (int neighbor : adjList[node]) { // 遍历相邻节点
dfs(adjList, neighbor, visited); // 递归访问未访问的邻居
}
}
int main() {
std::unordered_map<int, std::vector<int>> adjList = { /* 图的邻接列表 */ };
bool visited[adjList.size()] = {false}; // 初始化所有节点为未访问
int startNode = 0; // 搜索从这个节点开始
dfs(adjList, startNode, visited);
std::cout << "\n"; // 结束后换行
return 0;
}
```
在这个例子中,从`startNode`开始,程序会先访问该节点,然后递归地访问其所有相邻节点,直到遍历完所有路径。
阅读全文