采用邻接表表示图的深度优先搜索遍历的代码
时间: 2023-12-24 16:48:39 浏览: 70
利用邻接表实现图的深度优先遍历
以下是使用邻接表表示图的深度优先搜索遍历的代码示例:
```python
from collections import defaultdict
class Graph:
def __init__(self):
self.graph = defaultdict(list)
def add_edge(self, u, v):
self.graph[u].append(v)
def DFS(self, v, visited):
visited.add(v)
print(v, end=' ')
for neighbor in self.graph[v]:
if neighbor not in visited:
self.DFS(neighbor, visited)
def DFS_traversal(self, start):
visited = set()
self.DFS(start, visited)
g = Graph()
g.add_edge(0, 1)
g.add_edge(0, 2)
g.add_edge(1, 2)
g.add_edge(2, 0)
g.add_edge(2, 3)
g.add_edge(3, 3)
print("Depth First Traversal (starting from vertex 2):")
g.DFS_traversal(2)
```
在上面的代码中,我们首先定义了一个Graph类,其中包含了一个使用defaultdict创建的邻接表(self.graph)。然后,我们定义了一个add_edge方法,用于将每个边添加到邻接表中。
接下来,我们定义了DFS方法来执行深度优先遍历。在此方法中,我们首先将当前顶点标记为已访问,并输出其值。然后,我们遍历与该顶点相邻的所有顶点(即邻居),并对那些尚未访问的邻居递归地调用DFS方法。
最后,我们定义了DFS_traversal方法来启动深度优先遍历。在此方法中,我们首先创建一个空的visited集合,并将其传递给DFS方法,以确保在遍历过程中不会重复访问任何顶点。然后,我们调用DFS方法开始遍历,从指定的起始顶点开始。
在上面的代码示例中,我们创建了一个简单的无向图,并从顶点2开始执行深度优先遍历。输出结果为:2 0 1 3。
阅读全文