编写程序实现对图的深度优先遍历
时间: 2023-07-24 18:06:20 浏览: 80
基于C++进行图的深度优先遍历(高级语言程序设计实验)
以下是 Python 代码实现图的深度优先遍历(DFS):
```python
# 定义图的类
class Graph:
def __init__(self, vertices):
self.V = vertices # 图的顶点数
self.adj = [[] for i in range(self.V)] # 存储图的邻接表
# 添加边
def addEdge(self, u, v):
self.adj[u].append(v)
# DFS递归函数
def DFSUtil(self, v, visited):
visited[v] = True # 标记当前节点为已访问
print(v, end=' ') # 输出当前节点
# 递归访问该节点的所有邻居节点
for i in self.adj[v]:
if not visited[i]:
self.DFSUtil(i, visited)
# DFS遍历函数
def DFS(self, v):
# 创建一个标记数组,用于记录节点是否被访问过
visited = [False] * self.V
# 从给定节点开始递归遍历
self.DFSUtil(v, visited)
```
以上代码中,`Graph` 类表示图,其中 `V` 表示图的顶点数,`adj` 是一个邻接表,用于存储图的每个顶点的邻居节点。`addEdge` 方法用于添加边。`DFSUtil` 方法是 DFS 的递归函数,其中 `visited` 数组用于记录每个节点是否被访问过。`DFS` 方法是 DFS 的遍历函数,从给定节点开始递归遍历整个图。
阅读全文