Trie和B +树如何比较按字典顺序排序的字符串[按数十亿的顺序]? 它也应该支持范围查询。
来自perf。以及实现复杂性的观点。
答案 0 :(得分:14)
我想说这取决于你的意思范围。
如果你的范围表示为所有以开头的单词,那么Trie
是我说的正确选择。另一方面,Trie
不适用于 XX和ZZ之间的所有单词之类的请求。
请注意B+ Tree
的分支因子会影响其性能(中间节点的数量)。如果h
是树的高度,那么n max ~~ b h 。因此,h~~ log(n max )/ log(b)。
使用n = 1 000 000 000
和b = 100
,我们有h ~~ 5
。因此,它意味着只有5个指针解除引用从根到叶。它比Trie
更容易缓存。
最后,B+ Tree
无疑比Trie
更难实现:它更多地处于Red-Black Tree
级别的复杂性。
答案 1 :(得分:3)
取决于您的实际任务:
N
孩子,那么 Trie 是最好的选择,因为你只是访问的节点少于B +树场景。 答案 2 :(得分:0)