前缀树
前缀树(Trie树),也称为字典树或单词查找树,是一种树形数据结构,专门用于高效存储和检索字符串集合中的词项。
前缀树是一种多叉树结构,其中每个节点代表一个字符串前缀,从根节点到任一节点的路径上的字符序列构成该节点对应的前缀。
前缀树的应用
搜索引擎使用前缀树来快速检索和匹配用户输入的查询词。当用户输入一个查询词时,搜索引擎可以从前缀树的根节点开始,根据查询词中的字符逐个向下遍历节点,直到找到匹配的单词或其前缀。
搜索引擎可以利用前缀树提供自动补全建议和拼写检查。由于前缀树存储了大量的单词和它们的前缀,搜索引擎可以快速地根据用户已经输入的部分单词(前缀)给出完整的单词建议,或者指出拼写错误并提供正确的拼写。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| class Trie: def __init__(self): self.children = [None] * 26 self.isEnd = False def searchPrefix(self, prefix: str) -> "Trie": node = self for ch in prefix: ch = ord(ch) - ord("a") if not node.children[ch]: return None node = node.children[ch] return node
def insert(self, word: str) -> None: node = self for ch in word: ch = ord(ch) - ord("a") if not node.children[ch]: node.children[ch] = Trie() node = node.children[ch] node.isEnd = True
def search(self, word: str) -> bool: node = self.searchPrefix(word) return node is not None and node.isEnd
def startsWith(self, prefix: str) -> bool: return self.searchPrefix(prefix) is not None
|
参考文献
链接:https://leetcode.cn/problems/implement-trie-prefix-tree/solutions/1/shi-xian-trie-qian-zhui-shu-by-leetcode-ti500/