在看nlp切词分词的 时候看到了 trie 树(一种前缀树),用 python 实现了一把,因为没有指针,目前能想到的使用字典来做,具体见一下代码,有一个问题是没有判断是不是一个完整的单词,例如,如果 trie 树中存在'try',这个单词,那么查询'tr',接口也返回 true,这个加一个标记位时可以搞定的:
#trie树,没有指针,考虑用字典来存储{'a':{'l':{'l'},}, 'b':{}}
class trie():
def __init__(self):
self.tree = {}
def build(self, l):
#遍历每一个单词
for w in l:
tmp = self.tree
#遍历每一个字符
for c in w:
if c not in tmp:
tmp[c] = {}
tmp = tmp[c]
return self.tree
def search(self, w):
tmp = self.tree
for c in w:
if c not in tmp:
return False
else:
tmp = tmp[c]
return True