是否存在从字符串S [1..m]的后缀树生成suffix tree字符串S [2..m]的快速(O(1)时间复杂度)方法?
我熟悉Ukkonen,所以我知道如何从字符串S [1..m]的后缀树制作字符串S [1..m + 1]的快速后缀树,但是我不能应用算法反向情况。
答案 0 :(得分:1)
好吧,正如@jogojapan所说,要从S [1..m]树中获取S [2..m]树,我们需要:
@jogojapan进一步建议您保留指向树中最深叶的指针。有两个问题: L 不一定是树中最深的叶子,如Wikipedia's example shows,第二个如果你想能够输出相同类型的数据结构你收到了,一旦删除 L ,你需要找到 new position-0 leaf,无论如何都要花费O(m)时间。
(你可以做的是在O(m)时间内构造一个指向每个叶子的指针数组,并在另一个O(m)时间内按位置对它们进行排序。然后你就可以构造所有的树< em> {S [t..n]:1&lt; = t&lt; = m} ,每次的摊还时间不变。
假设你对摊销时间不感兴趣,那就让我们证明你的要求是不可能的。