将trie转换为反向trie?

时间:2013-01-11 05:12:43

标签: string algorithm data-structures trie

假设我有一个 trie 数据结构,其中包含许多字符串。要在trie中查找字符串,我将从根开始,按顺序跟随标有字符串的相应字符的指针,直到我到达给定节点。

现在假设我想为同一组字符串构建一个“反向trie”,而不是通过从第一个字符开始查找字符串,我会先查找字符串最后字符。

是否有一种有效的算法可以将尝试转换为反向尝试?在最糟糕的情况下,我总是可以列出trie中的所有字符串,然后将它们一次一个地插入到反向trie中,但似乎可能有更好,更聪明的解决方案。

1 个答案:

答案 0 :(得分:1)

但是如果您的排序条件基于字符串的反向,那么您的trie中的节点基本上是随机的。也就是说,如果序列[aardvark, bat, cat, dog, elephant, fox]按字母顺序排列,则反转单词将不会为您提供序列[xof, tnahpele, god, tac, tab, kravdraa]

换句话说,没有“更聪明的解决方案”而不是建立你的反向特里。