算法(4)- 前缀树

前缀树

前缀树(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/

Author

s-serenity

Posted on

2024-11-02

Updated on

2024-11-02

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.