【发布时间】:2010-10-15 01:28:32
【问题描述】:
我正在 VB.NET 中实现一个用于预测文本输入的 trie - 就 trie 的使用而言,基本上是自动完成。我已经让我的 trie 成为基于通用字典类的递归数据结构。
基本上是:
class WordTree Inherits Dictionary(of Char, WordTree)
单词中的每个字母(全部大写)都用作新 WordTrie 的键。叶子上的空字符表示单词的终止。为了找到一个以前缀开头的单词,我会一直遍历我的前缀,然后收集所有子单词。
我的问题基本上是关于 trie 本身的实现。我正在使用字典哈希函数来分支我的树。我可以使用列表并在列表上进行线性搜索,或者做其他事情。这里有什么流畅的动作?这是进行分支的合理方式吗?
谢谢。
更新:
为了澄清,我基本上是在问字典分支方法是否明显不如其他替代方法。我使用此数据结构的应用程序仅使用大写字母,因此数组方法可能是最好的。将来我可能会使用相同的数据结构来处理更复杂的预输入情况(更多字符)。在这种情况下,听起来字典是正确的方法 - 直到我需要使用更复杂的东西。
【问题讨论】:
-
这只是a-z吗?即没有国际化
-
是的,只有 26 个字母加上空字符。
-
能否提供更多反馈,以便我们完整回答问题?
标签: trie