C++深度优先遍历代码
时间: 2024-08-24 10:00:41 浏览: 51
在C++中,深度优先搜索(Depth-First Search,DFS)通常用于图或树的数据结构中。下面是一个基本的递归实现的示例,假设我们有一个邻接列表表示的无向图:
```cpp
#include <iostream>
#include <vector>
// 图节点结构体
struct Node {
int value;
std::vector<int> neighbors; // 邻居节点的索引
};
void dfs(Node* node, std::vector<bool>& visited) {
// 标记当前节点已访问
visited[node->value] = true;
// 打印当前节点的值
std::cout << node->value << " ";
// 对每个未访问的邻居递归调用dfs
for (int neighbor : node->neighbors) {
if (!visited[neighbor]) {
dfs(node + neighbor, visited); // 使用指针加法来快速访问邻接节点
}
}
}
int main() {
Node graph[] = { ... }; // 图的节点数组
int num_nodes = sizeof(graph) / sizeof(graph[0]);
std::vector<bool> visited(num_nodes, false);
// 从任意节点开始遍历
dfs(&graph[0], visited);
return 0;
}
```
在这个例子中,`dfs`函数接受一个指向节点的指针和一个布尔型的访问标记数组。如果节点还未访问过,就对其进行访问并递归地对它的相邻节点调用`dfs`。
阅读全文