写出一个邻接表的广度优先遍历
时间: 2023-06-21 20:11:46 浏览: 62
假设我们有一个无向图的邻接表如下:
```
0: 1 -> 2
1: 0 -> 2 -> 3
2: 0 -> 1 -> 3
3: 1 -> 2
```
其中每个数字表示一个节点,箭头表示该节点相邻的节点。
广度优先遍历可以使用队列实现,从起点开始将其加入队列中,然后依次遍历其相邻节点,并将其加入队列中,直到队列为空。
下面是实现代码:
```python
def bfs(graph, start):
visited = set() # 用集合存储已经访问过的节点
queue = [start] # 初始时将起点加入队列中
visited.add(start) # 将起点标记为已访问
while queue:
node = queue.pop(0) # 取出队首节点
print(node)
for neighbor in graph[node]: # 遍历相邻节点
if neighbor not in visited: # 如果该节点未被访问过,则加入队列中
queue.append(neighbor)
visited.add(neighbor) # 并标记为已访问过
```
运行该函数:
```python
graph = {0: [1, 2], 1: [0, 2, 3], 2: [0, 1, 3], 3: [1, 2]}
bfs(graph, 0)
```
输出结果为:
```
0
1
2
3
```
阅读全文