简介
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
|
代码复制的力扣第208题实现Trie, 还是别人的代码写的漂亮,啊哈哈哈
参考资料
- OI wiki