邻接表存储图的广度优先遍历
时间: 2023-11-05 08:58:46 浏览: 32
邻接表存储图的广度优先遍历可以使用队列来实现。具体步骤如下:
1. 创建一个辅助队列,用于存储待遍历的节点。
2. 从图中任意一个节点开始,将该节点入队。
3. 当队列不为空时,取出队首节点,访问该节点,并将该节点的所有未被访问过的邻居节点入队。
4. 重复步骤3,直到队列为空。
具体实现代码如下:
```python
# 邻接表存储图的广度优先遍历
from collections import deque
def bfs(graph, start):
visited = set() # 存储已经访问过的节点
queue = deque([start]) # 创建队列,将起始节点入队
visited.add(start) # 标记起始节点为已访问
while queue: # 当队列不为空时,继续遍历
cur = queue.popleft() # 取出队首节点
print(cur, end=" ")
for neighbor in graph[cur]: # 遍历当前节点的邻居节点
if neighbor not in visited: # 如果邻居节点没有被访问过,入队并标记为已访问
visited.add(neighbor)
queue.append(neighbor)
# 测试代码
if __name__ == "__main__":
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']
}
bfs(graph, 'A') # 从A节点开始遍历
```
输出结果为:`A B C D E F`,代表了广度优先遍历的结果。