我在大学里最喜欢的数据结构之一是Trie。如果前缀是共享的,它是一个很好的数据结构,用于保存大量字符串。查找也很好,因为无论集合中有多少字符串,它们都是在字符串的 O(|length|) 处完成的。
相比之下,平衡树的设置项目数量为 O(log N),加上您为比较支付的任何费用。哈希表将涉及哈希计算、比较等。
因此,令我惊讶的是,大多数语言的标准库中都没有 Trie 实现。
我能想出的唯一原因是内存访问成本可能使其过于昂贵。如果进行树查找,而不是调查 O(log N) 个位置,而不是执行 O(|length|) 个不同的位置,这会带来所有后果。如果字符串很长,这最终可能会太多。
所以我想知道:我刚才描述的问题有多少?当您需要存储大量字符串或字符串时,您会怎么做?