Python 字典树(Trie)介绍
字典树,也称为 Trie 树,是一种用于字符串匹配的数据结构。它存储一组键值对,并支持快速地查找一个字符串是否出现在这组键值中。
字典树的主要思想是利用字符串重叠的性质来压缩存储空间。它将每个字符串拆分成单个字符,并按照字符顺序依次存储在树的节点中。每个节点有多个子节点,每个子节点对应一个不同的字符。如果某个节点表示的字符串是某个键值的前缀,则该节点被标记为“终止节点”,并保存该键值。
字典树的基本操作包括插入、查找和删除。插入操作将一个新的键值对添加到字典树中。查找操作检查某个字符串是否出现在字典树中。删除操作将某个键值从字典树中删除。
Python 代码演示:
class TrieNode: # 字典树节点类 def __init__(self): # 初始化字典树节点 self.children = {} self.is_end = False class Trie: # 字典树类 def __init__(self): # 初始化字典树 self.root = TrieNode() def insert(self, word: str) -> None: # 插入一个字符串到字典树中 node = self.root for c in word: if c not in node.children: node.children[c] = TrieNode() node = node.children[c] node.is_end = True def search(self, word: str) -> bool: # 在字典树中查找一个字符串 node = self.root for c in word: if c not in node.children: return False node = node.children[c] return node.is_end def startsWith(self, prefix: str) -> bool: # 在字典树中查找是否存在以 prefix 开头的字符串 node = self.root for c in prefix: if c not in node.children: return False node = node.children[c] return True # 演示代码 trie = Trie() trie.insert("pidancode.com") trie.insert("皮蛋编程") print(trie.search("pidancode.com")) # True print(trie.startsWith("pi")) # True print(trie.search("pianobencheng")) # False
相关文章