使用邻接链表为存储结构,完成图的非递归层次遍历算法
时间: 2024-06-13 15:06:13 浏览: 101
图的非递归深度遍历以及广度遍历(已免费下载)
使用邻接链表作为存储结构,完成图的非递归层次遍历算法,可以按照以下步骤进行:
1. 定义一个队列,用于存储待遍历的节点。
2. 将起始节点入队。
3. 当队列不为空时,执行以下操作:
- 弹出队首节点,并访问该节点。
- 遍历该节点的所有邻接节点,将未被访问过的邻接节点入队。
4. 遍历完成后,所有节点都被访问过。
下面是使用Python实现的代码示例:
```python
from collections import deque
# 定义图的邻接链表表示
graph = {
'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['F'],
'D': [],
'E': ['F'],
'F': []
}
# 定义非递归层次遍历函数
def bfs(graph, start):
visited = set() # 用集合记录已经访问过的节点
queue = deque([start]) # 定义队列,并将起始节点入队
while queue: # 当队列不为空时,执行以下操作
node = queue.popleft() # 弹出队首节点
if node not in visited: # 如果该节点未被访问过
print(node) # 访问该节点
visited.add(node) # 将该节点标记为已访问
for neighbor in graph[node]: # 遍历该节点的所有邻接节点
if neighbor not in visited: # 如果邻接节点未被访问过
queue.append(neighbor) # 将邻接节点入队
# 调用非递归层次遍历函数
bfs(graph, 'A')
```
输出结果为:
```
A
B
C
D
E
F
```
阅读全文