Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
创建字符串“ABAB”的后缀树时,我只得到 2 个节点:
ABAB 和 BAB
最长的重复子字符串(“AB”)应该位于“具有至少 k 个后代的最深节点”,但我的字符串不是这种情况,这里有什么问题?
谢谢
如果您使用某种形式的后缀树,它只有两个节点用于字符串 ABAB,那么它不会直接与您引用的算法一起使用。这就是后缀树的样子,O代表节点并$用于标记字符串的结尾。
O
$
O / \ / \ B AB / \ O O / \ / \ $ AB$ $ AB$ / \ / \ O O O O
这里的关键特征(您正在使用的树中缺少该特征)是每个叶节点对应于字符串的后缀。
具有至少两个叶后代的最深节点位于路径 AB 处(深度是从根到达该节点所需的子串长度,在本例中为 2),这确实是最长的重复子串。