如何找到BFS找到的实际路径

How can I find the actual path found by BFS?

本文关键字:路径 何找 BFS      更新时间:2023-10-16

我试图解决的问题涉及MRT系统的树。

每个节点最多可以连接到4个点,这使事情简化了很多。这是我的想法。

struct stop {
    int path, id;
    stop* a;
    stop* b;
    stop* c;
    stop* d;
};

我可以编写代码来保存BFS搜索所有点所需的所有信息,但我主要担心的是,即使BFS正确地找到了点,我如何才能知道它的路径?

BFS会搜索每个级别,当其中一个到达我的目的地时,它会跳出运行循环,然后,我会得到一个已访问的队列和一个未访问的队列,当访问的队列中充满BFS搜索过的每个节点时,我该如何告诉用户他需要访问哪些站点?

为此,您需要存储一个map:V->V(从顶点到顶点),它将从每个节点v映射到"发现"v的顶点u

您将在BFS的迭代过程中填充此地图。

稍后,您可以通过简单地从目标节点(在地图中)一直到返回源来重建路径,这将是您的路径(当然是反向的)。

请注意,如果枚举顶点,则此映射可以实现为数组。