实现深度遍历邻接表存储的图代码
时间: 2024-12-12 16:32:28 浏览: 9
C++实现图的邻接表存储和广度优先遍历实例分析
实现深度优先搜索(DFS)遍历邻接表存储的图,通常会采用递归的方式来完成。这里是一个简单的Python示例,假设我们有一个`AdjacencyList`类表示邻接列表结构:
```python
class Node:
def __init__(self, value):
self.value = value
self.neighbors = []
class AdjacencyList:
def __init__(self):
self.graph = {}
def add_edge(self, node1, node2):
if node1 not in self.graph:
self.graph[node1] = []
self.graph[node1].append(node2)
def dfs(self, start_node):
visited = set()
stack = [start_node]
while stack:
node = stack.pop()
if node not in visited:
print(node.value) # 访问节点值
visited.add(node)
for neighbor in self.graph.get(node, []): # 遍历邻居节点
stack.append(neighbor)
# 使用示例
adj_list = AdjacencyList()
adj_list.add_edge(Node('A'), Node('B'))
adj_list.add_edge(Node('A'), Node('C'))
adj_list.add_edge(Node('B'), Node('D'))
adj_list.dfs(Node('A')) # 深度优先遍历从'A'开始
```
在这个例子中,我们首先创建了一个邻接列表`adj_list`,然后添加了节点之间的连接。`dfs`函数接受起始节点,并通过栈数据结构实现深度优先遍历。
阅读全文