图的邻接表的广度遍历数据结构
时间: 2024-03-18 11:21:03 浏览: 87
图的邻接表广度优先遍历(BFS)的数据结构通常使用队列(Queue)来实现。
具体过程如下:
1. 将起始节点加入队列中。
2. 从队列中取出第一个节点,并将其所有未访问过的邻居节点加入队列中。
3. 标记该节点为已访问。
4. 重复步骤2-3,直到队列为空。
可以使用一个数组来记录节点是否被访问过,队列可以使用数组或链表实现。
例如,下面是一个使用邻接表实现的图的广度优先遍历的示例代码(使用队列实现):
```python
from collections import deque
# 定义邻接表
graph = {
'A': set(['B', 'C']),
'B': set(['A', 'D', 'E']),
'C': set(['A', 'F']),
'D': set(['B']),
'E': set(['B', 'F']),
'F': set(['C', 'E'])
}
# 广度优先遍历函数
def bfs(graph, start):
# 初始化队列和已访问列表
queue = deque([start])
visited = set([start])
while queue:
# 取出队列中的第一个节点
node = queue.popleft()
print(node, end=' ')
# 遍历该节点的邻居节点
for neighbor in graph[node]:
if neighbor not in visited:
# 将未访问过的邻居节点加入队列中
queue.append(neighbor)
visited.add(neighbor)
# 调用函数进行遍历
bfs(graph, 'A')
```
输出结果为:A B C D E F
阅读全文