3

关于来自维基百科的特里

【对比HashTable】尝试支持有序迭代

我不确定这里首先是什么意思。它与排序迭代相同吗?
此外,这应该是该数据结构的固有特征吗?
我的意思是,如果将 aHashSet用于 a 中每个节点的子节点,Trie我们可以O(1)尝试找到要分支的子节点,或者使用 aLinkedList可以节省节点上的空间。
也许我错了,但从我的角度来看,支持ordered迭代的唯一方法是保持每个节点的所有键数组甚至未使用。
这种方法不好吗?
最后一点:
如果ordered这里与插入顺序(而不是排序)有关,因为我们将每个单词(使用字符作为键)插入到相应的节点,我们将如何得到它,但我看不出这如何为我们提供有关插入顺序的信息?
有人能帮我把这些事情弄清楚吗?
谢谢你。

4

2 回答 2

3

他们的意思是对 trie 的深度优先搜索将产生 trie 中字符串的字典顺序输出。

但是,是的,你是对的,这假设给定级别上的所有兄弟节点都按字典顺序访问,这远非给定,尤其是对于大字母表,通过哈希表实现子节点表是有意义的。

总之,我认为你的怀疑是有道理的,维基百科的文章是错误的

但值得注意的是,即使子节点没有排序,在 trie 上按字典顺序迭代也是可以承受的,因为在迭代时对它们进行排序预计会相对便宜——每个 trie 节点中的子节点很少,因此总体迭代 trie 的性能仍将在 O( n ) 预期时间内 - 与哈希表相反,其中有序迭代有效地意味着对所有元素进行排序,即 O( n log n ) 操作。

于 2012-05-24T15:38:16.730 回答
0

是排序的意思。如果不付出额外的努力,您将无法尝试插入订单。不完全确定您所说的固有特征是什么意思。实现需要提供它(或提供对内部的访问),但这样做很简单。

于 2012-05-24T15:32:23.137 回答