这里给出BFS基本算法框架,核心就是借助队列这种数据结构,每次遍历将一个节点的所有邻居节点加入到队列,然后按照队列 FIFO 的特性,实现BFS算法。
python
# BFS 算法框架
# 计算从起点 start 到终点 target 的最近距离
def bfs(start, traget):
step = 0
# 核心数据结构
queue = []
# 避免走回头路
visited = []
# 将起点加入队列中
queue.append(start)
visited[start] = True
while queue:
sz = len(queue)
for i in range(sz):
cur = queue.pop()
# 划重点:这⾥判断是否到达终点
if cur == traget:
return step
for neighbor in cur.adj():
if not visited[neighbor]:
queue.append(neighbor)
visited[neighbor] = True
step += 1
return step