Java 在图中查找具有BFS的路径

Java 在图中查找具有BFS的路径,java,graph,path,breadth-first-search,Java,Graph,Path,Breadth First Search,我想在一个有bfs的图中找到两个节点之间的路径。我编写了一个函数,它以正确的顺序访问所有节点,不确定它是否有效,但对我来说似乎是正确的,但我需要使用生成路径的所有边的列表来存储路径,我不知道如何操作:\ 有人能帮我吗?提前感谢:您创建了一个pof父阵列。因此,如果p[u]=v,在从源到u的路径中,有一条从v到u的边。其中源顶点的父顶点为空 因此,当我们在当前顶点v中时,在将其相邻顶点u插入队列之前,我们将p[w]=v。找到目标顶点后,在数组p中向后移动。从目标顶点w开始,p[w]是w的父节点,p

我想在一个有bfs的图中找到两个节点之间的路径。我编写了一个函数,它以正确的顺序访问所有节点,不确定它是否有效,但对我来说似乎是正确的,但我需要使用生成路径的所有边的列表来存储路径,我不知道如何操作:\

有人能帮我吗?提前感谢:

您创建了一个pof父阵列。因此,如果p[u]=v,在从源到u的路径中,有一条从v到u的边。其中源顶点的父顶点为空


因此,当我们在当前顶点v中时,在将其相邻顶点u插入队列之前,我们将p[w]=v。找到目标顶点后,在数组p中向后移动。从目标顶点w开始,p[w]是w的父节点,p[p[w]]是w的父节点,依此类推

这可能是一种方法

在这种方法中,您保留一个列表队列,在其中获取列表并从该列表中获取第一个节点

找到该节点的adj,并为每个未访问的节点在队列中添加新路径+[node],如果到达目的地,也返回该路径+[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