参考《labuladong的算法小抄》
def BFS(start, target):
queue = collections.deque() # 核心数据结构-队列
visited = set() # 记录走过的路径,避免走回头路--使用集合,检索速度更快
queue.append(start)
visited.add(start)
step = 0 # 记录扩散的步数
while queue:
size = len(queue) # 将当前队列中的所有节点向四周扩散
for i in range(size):
cur = queue.popleft()
if cur == target: # 划重点:这里判断是否到达终点
return step
for node in cur: # 将cur的相邻节点加入队列
if node not in visited: