深度优先算法完整代码
时间: 2024-05-17 13:10:23 浏览: 77
深度优先搜索是一种常用的图遍历算法,可以用来查找图中的路径以及寻找连通块等。以下是深度优先搜索的完整代码实现:
```python
# 定义图的类
class Graph:
def __init__(self, vertices):
self.V = vertices # 顶点数
self.graph = [[] for i in range(self.V)] # 图的邻接表表示
# 添加边
def addEdge(self, u, v):
self.graph[u].append(v)
# 深度优先搜索
def DFS(self, v, visited):
visited[v] = True # 标记当前顶点为已访问
print(v, end=' ')
# 递归遍历与当前顶点相邻的所有未访问顶点
for i in self.graph[v]:
if not visited[i]:
self.DFS(i, visited)
# 对所有未访问过的顶点进行深度优先遍历
def DFS_all(self):
visited = [False] * self.V
# 遍历所有未访问过的顶点
for i in range(self.V):
if not visited[i]:
self.DFS(i, visited)
```
在这段代码中,我们首先定义了一个`Graph`类,用于表示图。其中,`__init__`方法用于初始化图的邻接表;`addEdge`方法用于添加边;`DFS`方法用于实现深度优先搜索;`DFS_all`方法则是对所有未访问过的顶点进行深度优先遍历。
具体而言,在`DFS`方法中,我们首先标记当前顶点为已访问,并输出当前顶点。然后,我们递归遍历与当前顶点相邻的所有未访问顶点。在`DFS_all`方法中,我们则是遍历所有未访问过的顶点,对每个顶点进行深度优先遍历。
如果你想要使用这段代码进行测试,可以按照以下方式进行:
```python
# 创建一个5个节点的图
g = Graph(5)
# 添加边
g.addEdge(0, 1)
g.addEdge(0, 2)
g.addEdge(1, 2)
g.addEdge(2, 0)
g.addEdge(2, 3)
g.addEdge(3, 3)
print("深度优先遍历结果为:")
g.DFS_all()
```
以上代码会输出图的深度优先遍历结果。
阅读全文