采用邻接表表示图的广度优先搜索遍历
时间: 2023-10-13 08:18:26 浏览: 117
邻接表是一种表示图的数据结构,它存储了每个顶点的所有相邻顶点的列表。对于无向图,邻接表中的每个顶点的相邻顶点都会被记录在其对应的列表中;对于有向图,邻接表中的每个顶点只记录其出边所连接的顶点。
广度优先搜索是一种基于队列实现的图遍历算法,其遍历过程按照距离当前顶点的距离递增的顺序进行。遍历过程中,从起点开始,先将其加入队列中,然后依次将其未被访问过的相邻顶点加入队列,直到队列为空。
下面是邻接表表示的无向图进行广度优先搜索遍历的代码实现:
```python
from collections import deque
class Graph:
def __init__(self, vertices):
self.V = vertices
self.adj = [[] for i in range(vertices)]
def add_edge(self, u, v):
self.adj[u].append(v)
self.adj[v].append(u)
def BFS(self, s):
visited = [False] * self.V
queue = deque()
visited[s] = True
queue.append(s)
while queue:
s = queue.popleft()
print(s, end=' ')
for i in self.adj[s]:
if not visited[i]:
visited[i] = True
queue.append(i)
```
其中,Graph 类代表图,其构造函数中的参数 vertices 表示图中顶点的个数,adj 属性是邻接表,add_edge 方法用于添加边,BFS 方法实现广度优先搜索。visited 数组用于记录每个顶点是否已被访问,queue 是队列,用于存储待访问的顶点。代码中的 print(s, end=' ') 用于打印访问的顶点,可以根据实际需求进行修改。
阅读全文