我目前正在实现一个基数树/帕特里夏树(无论你想怎么称呼它)。我想用它在一个严重不足的硬件上的字典中进行前缀搜索。它应该或多或少像自动完成一样工作,即显示输入前缀匹配的单词列表。
我的实现基于这篇文章,但其中的代码不包括前缀搜索,尽管作者说:
[...]假设您要枚举所有具有公共前缀“AB”的键的节点。您可以从该根开始执行深度优先搜索,只要遇到后边缘就停止。
但我不明白这应该如何工作。例如,如果我从这些词构建一个基数树:
疾病
想象
想象
想象
模仿
立即
立即
巨大
的
对于前缀“i”和“in”,我将得到完全相同的“最佳匹配”,因此我似乎很难通过从最佳匹配中遍历树来收集所有匹配的单词。
此外,Java 中有一个基数树实现,它在RadixTreeImpl.java中实现了前缀搜索。该代码显式检查所有节点(从某个节点开始)是否有前缀匹配 - 它实际上比较字节。
谁能指出我在基数树上实现前缀搜索的详细描述?Java实现中使用的算法是唯一的方法吗?