给我一段最简洁的c++代码用于dfs
时间: 2024-10-20 21:13:08 浏览: 21
C++使用DFS(深度优先)遍历邻接矩阵(源代码)
在C++中,深度优先搜索(DFS)通常用于遍历树形结构或图。这里是一个简单的递归实现的DFS代码片段:
```cpp
#include <iostream>
#include <vector>
// 定义节点数据结构(如果图是无向的)
struct Node {
int value;
std::vector<Node*> neighbors; // 存储相邻节点
};
void dfs(Node* node, bool visited[]) {
if (node == nullptr) return; // 如果节点为空,直接返回
visited[node->value] = true; // 标记当前节点已访问
std::cout << node->value << " "; // 访问操作(打印值)
// 遍历相邻节点并继续进行DFS
for (Node* neighbor : node->neighbors) {
if (!visited[neighbor->value]) {
dfs(neighbor, visited);
}
}
}
int main() {
// 初始化节点和边,此处省略
Node* root = ...;
bool visited[100]; // 假设你有100个节点
memset(visited, false, sizeof(visited)); // 初始化所有节点未访问
dfs(root, visited); // 从根节点开始 DFS
return 0;
}
```
这段代码假设你有一个 `Node` 结构体表示图的节点,每个节点包含一个整数值和指向相邻节点的指针列表。`dfs` 函数接受一个当前节点和一个布尔数组 `visited` 来跟踪哪些节点已经被访问过。
阅读全文