【发布时间】:2013-01-21 18:56:41
【问题描述】:
我对尝试的了解越多,出于某种原因我就越感到困惑。
现在让我感到困惑的是:
我已经阅读了大约 2 种类型的实现。
- 使用数组表示字符(不存储字符 本身)并且在每个节点中还存储实际单词的索引(如果 我们达成了一个词)。
- 使用
Collection的节点存储字符并在末尾 每个节点的使用布尔值来确定我们是否到达了一个单词 沿着这条路走下去
在第一种情况下,它没有被提及,但似乎我们实际上必须保留所有字典单词(因为我们间接引用它们)。所以我们有array_size*numberOfNodes*lengthOfword + size of dictionary processed
在后一种情况下,我们不需要字典,因为字符直接存储在树中。所以在我看来,第二种实现更节省空间。但我不确定多少。
我对实现的理解是否正确,是否有特定的理由来选择另一种?另外我们如何计算第二种情况的空间需求?
【问题讨论】:
-
大多数为尝试显示的示例可以通过其他方式更有效地实现(维基百科示例,它使用散列字典提供字符查找,特别糟糕)。尝试提供明显胜利的地方是在更大规模的查找表中,例如,单个单词是节点键的查找表。它们还可以为稀疏表提供胜利。
标签: java string algorithm data-structures trie