C++代码dfs()
时间: 2024-09-25 13:14:11 浏览: 36
在C++中,深度优先搜索(DFS,Depth First Search)是一种用于遍历或搜索树形结构和图的算法。它的基本思想是从根节点开始,尽可能深地探索分支,直到到达叶子节点,然后回溯到上一层继续探索其他路径。以下是使用递归实现的一个简单的DFS函数示例:
```cpp
#include <iostream>
#include <vector>
// 定义一个代表图中节点的数据结构
struct Node {
int value;
std::vector<Node*> neighbors; // 存储相邻节点的指针
};
void dfs(Node* node, bool visited[] = {}) {
// 如果节点未访问过,标记并打印其值
if (visited[node] == false) {
visited[node] = true;
std::cout << "Visiting: " << node->value << std::endl;
// 遍历当前节点的所有邻居,并对它们进行DFS
for (Node* neighbor : node->neighbors) {
dfs(neighbor, visited);
}
}
}
int main() {
// 初始化图或树结构
// ...
// 开始从某个起始节点进行DFS
Node* startNode = ...;
bool visitArray[nodeCount]; // 假设nodeCount是节点总数
memset(visitArray, false, sizeof(visitArray));
dfs(startNode, visitArray);
return 0;
}
```
在这个例子中,`visited`数组是一个可选的参数,用于跟踪已经访问过的节点,防止无限循环。在`main()`函数中,你需要提供一个起点`startNode`。
阅读全文