dfs代码模板c++
时间: 2024-01-31 14:11:04 浏览: 144
通用的C++数据结构代码实现,可直接运行调试,使用模板
当然可以!以下是一个常见的深度优先搜索(DFS)的代码模板(C++):
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 定义图的数据结构
class Graph {
private:
int V; // 顶点的数量
vector<vector<int>> adj; // 邻接表
public:
Graph(int v) {
V = v;
adj.resize(V);
}
// 添加边
void addEdge(int u, int v) {
adj[u].push_back(v);
adj[v].push_back(u);
}
// DFS遍历
void DFS(int v, vector<bool>& visited) {
visited[v] = true;
cout << v << " ";
// 递归访问所有未被访问过的邻接顶点
for (int i = 0; i < adj[v].size(); i++) {
int u = adj[v][i];
if (!visited[u]) {
DFS(u, visited);
}
}
}
// 对图进行DFS遍历
void DFSTraversal() {
vector<bool> visited(V, false); // 记录顶点是否被访问过
// 从每个未被访问过的顶点开始进行DFS遍历
for (int v = 0; v < V; v++) {
if (!visited[v]) {
DFS(v, visited);
}
}
}
};
int main() {
int V = 5; // 图的顶点数量
Graph g(V);
// 添加边
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 3);
g.addEdge(1, 4);
cout << "DFS Traversal: ";
g.DFSTraversal();
return 0;
}
```
这个代码模板实现了一个简单的无向图的DFS遍历。你可以根据自己的需求进行修改和扩展。
阅读全文