我试图解决的问题涉及MRT系统树。
每个节点最多可以连接4个点,这简化了很多事情。这是我的想法。
struct stop {
int path, id;
stop* a;
stop* b;
stop* c;
stop* d;
};
我可以编写代码来保存BFS搜索所有点所需的所有信息,但我主要担心的是,即使BFS正确找到了这一点,我怎么知道它的路径呢?
BFS将搜索每个级别,当其中一个到达目的地时,它将跳出运行循环,然后,我将获得一个访问队列和一个未访问的队列,我该怎么告诉用户什么当访问的队列被BFS搜索到的每个节点填满时,他需要访问哪些停止?
答案 0 :(得分:22)
为此,您需要存储map:V->V
(从顶点到顶点),它将从每个节点v
映射,即“发现”{{1}的顶点u
}}
您将在BFS的迭代过程中填充此地图。
稍后 - 你可以通过简单地从目标节点(在地图中)向上重建路径,直到你回到源头,这将是你的路径(当然是逆转的。)
请注意,如果枚举顶点,则可以将此地图实现为数组。