Data structures 自动建议功能的加权trie

Data structures 自动建议功能的加权trie,data-structures,trie,Data Structures,Trie,我有一个trie(后缀树),我在我的网站上使用的自动建议功能 现在,我想显示最流行(权重最高)的文本,而不是权重较低的文本。我怎样才能改变我的trie,使建议按加权顺序出现 或者我应该在内存中按权重排序吗?您可以在每个节点上添加count或weight属性,并在使用单词构建trie时对其进行更新。每个字符的初始权重为0,但如果一个字符是单词的终端字符,则其初始权重为1。在不断添加单词时,可以调整终端字符的权重 例如,您可以: t:0 | o:1 | w:3---e:0 | \ \ n

我有一个trie(后缀树),我在我的网站上使用的自动建议功能

现在,我想显示最流行(权重最高)的文本,而不是权重较低的文本。我怎样才能改变我的trie,使建议按加权顺序出现


或者我应该在内存中按权重排序吗?

您可以在每个节点上添加
count
weight
属性,并在使用单词构建trie时对其进行更新。每个字符的初始权重为
0
,但如果一个字符是单词的终端字符,则其初始权重为
1
。在不断添加单词时,可以调整终端字符的权重

例如,您可以:

t:0
|  
o:1
|
w:3---e:0
|  \    \
n:2 a:0  l:4
     \
      r:0
       \
        d:2
对于字符串
to
(出现一次)、
tow
(出现三次)、
tob
(出现四次)、
town
(出现两次)和
to
(也出现两次)

然后,如果前缀为
tow
,则可以查看非零加权字符串,例如
tow:3
tower:4
town:2
,以及
朝向:2

之后,您可以根据重量进行排序

我还没有在实践中尝试过这个实现;这只是一个想法