我正在研究各种“前缀查找”数据结构,例如 Tries 和 Radix Tries (Patricia Tries)。
至此,我对 Try 和 radix Try 都有了深刻的理解,并且对它们的用例也有了很好的理解。
然而,一个问题突然出现在我身上:使用常规 trie 是否比压缩 trie(例如 radix trie)有任何优势?
常规的 trie 实现起来很简单:它为每个节点存储一个字符。Patricia Trie 实现起来有点困难:它是“压缩的”,因为每个节点都包含一个完整的字符串,并且前缀比较是使用按位匹配完成的。
由于 Patricia Trie 更节省空间,并且不会牺牲查找速度,因此是否有使用每个节点都包含一个字母的常规(非压缩)Trie 的用例?
我能想到的唯一用例是,如果您的“字符串”不是常规字符串(如更复杂对象的数组),因此无法使用逐位比较进行比较。
常规(非压缩)Trie 还有其他用例吗?