在许多图形算法中,所需结果的连接通常存储在parent
数组中。
例如,在 BFS 或 DFS,或最小生成树,或最短路径中,我们将每个顶点的父节点存储在parent[]
.
我的问题是,如果我只有这样一个parent[]
,我怎样才能轻松地获得任意顶点之间的路径,比如说,在 O(n) 中?请注意,它是 BFS 或 DFS 或其他东西并不重要,重要的是parent[]
我从图形算法中得到的唯一。
如果其中一个顶点是另一个顶点的祖先,我可以轻松获得路径,否则我只能从一个顶点追溯到parent[]
根,然后对另一个顶点再次执行此操作,然后检查它们的路径在哪个祖先(到根)合并。这导致 O(n^2) 因为我必须将一个顶点的每个祖先与另一个顶点的每个祖先进行比较以寻找合并点。
任何人都可以帮忙吗?