我正在研究各种"前缀查找"数据结构,如Tries和Radix Tries(Patricia Tries)。
在这一点上,我对try和基数try都有了扎实的理解,并且对它们的用例也有了很好的理解。
然而,我突然想到一个问题:与压缩的trie(如基数trie)相比,使用正则trie有什么优势吗?
常规trie实现起来很简单:它为每个节点存储一个字符。Patricia Trie的实现有点困难:它是"压缩"的,因为每个节点都包含一个完整的字符串,并且前缀比较是使用逐位匹配进行的。
由于Patricia Trie更节省空间,并且不会牺牲查找速度,因此有没有使用每个节点都包含一个字母的常规(非压缩)Trie的用例?
我能想到的唯一用例是,如果您的"字符串"不是常规字符串(如更复杂对象的数组),因此无法使用逐位比较进行比较。
常规(非压缩)Trie还有其他用例吗?
最有可能的情况是在压缩trie中插入的开销太大。
我在猜测它们更容易理解,并使算法的分析/设计更容易。因此,在引入压缩树之前,它们非常适合用于教育目的。