实现元素类型为整形的图的深度优先遍历算法
时间: 2024-02-09 14:08:42 浏览: 72
实现图的遍历算法 深度优先遍历
5星 · 资源好评率100%
好的,以下是实现元素类型为整形的图的深度优先遍历算法的示例代码(使用C++语言实现):
```c++
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
// 定义图的节点结构体
struct Node {
int val;
vector<Node*> neighbors;
Node(int _val) {
val = _val;
neighbors = vector<Node*>();
}
};
// 深度优先遍历函数
void dfs(Node* node, vector<bool>& visited) {
if (!node || visited[node->val]) {
return;
}
visited[node->val] = true;
cout << node->val << " ";
for (Node* neighbor : node->neighbors) {
dfs(neighbor, visited);
}
}
int main() {
// 创建图的节点
Node* node0 = new Node(0);
Node* node1 = new Node(1);
Node* node2 = new Node(2);
Node* node3 = new Node(3);
Node* node4 = new Node(4);
Node* node5 = new Node(5);
// 构建图的边
node0->neighbors = {node1, node2};
node1->neighbors = {node3, node4};
node2->neighbors = {node4, node5};
node3->neighbors = {node5};
node4->neighbors = {};
node5->neighbors = {};
// 深度优先遍历图
vector<bool> visited(6, false);
dfs(node0, visited);
return 0;
}
```
以上代码实现了一个简单的图,并通过深度优先遍历算法遍历了这个图。在遍历过程中,我们使用了一个 `visited` 数组来记录每个节点是否已经被访问过,避免重复访问。在遍历过程中,我们先输出当前节点的值,然后递归遍历它的所有邻居节点。这样就能够完成整个图的深度优先遍历。
阅读全文