虽然 BFS 确实是一种只能找到最短路径的算法,但是我们可以在遍历过程中记录下所有的路径,也就是说,在搜索目标节点时,将所有能够到达该节点的路径全部记录下来,而不仅仅是最短的那一条路径。以下是 Python 代码示例:
from collections import deque
def bfs(start, target, graph):
# 记录所有到达目标节点的路径
paths = []
# 存储已经访问过的节点
visited = set()
queue = deque()
queue.append((start, [start])) # 将起始节点和路径加入队列
while queue:
node, path = queue.popleft()
if node == target:
paths.append(path) # 找到目标节点时保存路径
continue
visited.add(node)
for neighbor in graph[node]:
if neighbor not in visited:
queue.append((neighbor, path + [neighbor]))
return paths
在上述代码中,使用一个列表 paths
来保存所有到达目标节点的路径,当找到目标节点时,将当前路径加入 paths
列表中。最终返回的 paths
列表包含了所有能够到达目标节点的路径。
上一篇:BFS在无权无向图中会失败吗?
下一篇:BFS准备兔子逃生