我想在带有bfs的图中找到两个节点之间的路径。我写了一个以正确的顺序访问所有节点的函数(不确定它是否有效,但对我来说似乎是正确的)但是我需要存储路径(带有创建路径的所有边的列表)并且我不# 39;不知道怎么做:\
有人能帮助我吗?在此先感谢:)
答案 0 :(得分:0)
您创建父类的数组p
。因此,如果p[u] = v
在从源到v
的路径中存在从u
到u
的边缘。源顶点的父级是null
。
因此,当我们在当前顶点v
中时,在将其相邻顶点u
插入队列之前,我们生成p[w] = v
。当您找到目标顶点时,您将在数组p中向后移动。从目标顶点w
开始,p[w]
是w
的父级,p[p[w]]
是w
的父级的父级,依此类推。
答案 1 :(得分:0)
这可能是其中一种方法。
在这种方法中,您将保留一个列表队列,您可以在其中获取列表并从该列表中获取第一个节点。
找到该节点的adj()
,并且对于未访问的每个节点,在队列中添加新的path+[node]
,如果到达目的地,则返回path+[node]
。
step 1 : create a queue of to hold the paths.
step 2 : add the source as [ source ] in the queue
step 3 : while the queue is not empty get one path from it
(as this works for both bfs and dfs thats why "get" not "dequeue" or "pop")
step 4: get the last node of that path (list)
step 5: get the adj of that node and for each not explored create a new path i.e oldpath +[adj node]
step 6:if the adj node is what u want then return the path else add the path to the queue
我希望这很有帮助。