简介
Trie树又称字典树(前缀树),常用在搜索场景下。用于判断一个词汇或者文本是否出现在已有的记录中。
利用Trie树记录一个词表,判断文本中的词汇是否出现在词表中。这个应用中使用Trie树可以提高整体的检索效率。
实现
通常Tire树的实现需要完成三部分:
- Trie树中插入词汇
- 从Trie树中检索词汇
- 从Trie树中判断是否有给出的前缀字符串
代码
class Trie(object):
def __init__(self):
self.lookup = {} # 可以理解为是根节点
def insert(self, word):
root = self.lookup
for c in word:
if c not in root:
root[c] = {}
root = root[c]
root['#'] = '#' # 添加截止符号
def search(self, word):
root = self.lookup
for c in word:
if c not in root:
return False
root = root[c]
if '#' in root: # 判断是否有词汇在当前节点处结束
return True
return False
def start_with(self, prefix):
root = self.lookup
for c in prefix:
if c not in root:
return False
root = root[c]
return True # 遍历完成没有出现任何问题,即存在当前给定的前缀