LC 208实现 Trie (前缀树)Implement Trie (Prefix Tree) 中等
设计前缀树,支持 insert 插入单词、search 判断完整单词存在、startsWith 判断前缀存在三个操作。
思路 每个节点存 26 个子节点指针和 isEnd 标记;插入沿路径建节点,查找沿路径走,按 isEnd 区分单词与前缀。
class Trie: def __init__(self): self.children = [None] * 26 self.isEnd = False def _find(self, word: str): node = self for ch in word: i = ord(ch) - ord('a') if not node.children[i]: return None node = node.children[i] return node def insert(self, word: str) -> None: node = self for ch in word: i = ord(ch) - ord('a') if not node.children[i]: node.children[i] = Trie() node = node.children[i] node.isEnd = True def search(self, word: str) -> bool: node = self._find(word) return node is not None and node.isEnd def startsWith(self, prefix: str) -> bool: return self._find(prefix) is not None