LC 速查

HOT 100索引 › B9 图论 Graph

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
← 上一题 课程表全排列 下一题 →