实现深度遍历邻接表存储的图数据结构代码
时间: 2024-12-12 13:32:37 浏览: 9
头歌数据结构图的邻接表存储及遍历操作
5星 · 资源好评率100%
在使用邻接表(Adjacency List)表示图的数据结构中,深度优先搜索(DFS)是一种常用的遍历方法。以下是使用Python实现深度优先搜索遍历邻接表的简单示例:
```python
class Node:
def __init__(self, value):
self.value = value
self.neighbors = []
def add_edge(node_list, node1, node2):
node1.neighbors.append(node2)
# 如果双向连接,也可以给node2添加node1
# 创建节点和边
nodes = [Node(i) for i in range(6)]
add_edge(nodes, nodes[0], nodes[1])
add_edge(nodes, nodes[0], nodes[4])
add_edge(nodes, nodes[1], nodes[2])
add_edge(nodes, nodes[1], nodes[5])
add_edge(nodes, nodes[2], nodes[3])
add_edge(nodes, nodes[3], nodes[4])
def dfs(graph, start_node):
visited = set()
stack = [start_node]
while stack:
node = stack.pop()
if node not in visited:
print(node.value, end=" -> ")
visited.add(node)
# 将邻居压入栈中
for neighbor in node.neighbors:
stack.append(neighbor)
# 使用深度优先遍历
dfs(nodes, nodes[0]) # 从节点0开始遍历
```
这个例子中,我们首先创建了一个`Node`类代表图中的每个顶点,并维护一个`neighbors`列表存储其相邻顶点。然后定义了添加边的方法`add_edge`。`dfs`函数通过使用栈来实现深度优先遍历,访问每个节点并将其未访问过的邻居加入栈中。
阅读全文