208. 实现 Trie (前缀树)

Medium

思路

首先需要获取Trie知识

Trie 树的特征
使用Trie的优缺点
优点
缺点

所以在一般的工程中,Trie见得比较少,应为要做测试才能比较Trie和Hash的效率。而且一般语言都有Hash的库,但是Trie对象要手撕

刷题中Trie的使用场景

明显用Trie来做的题目的主要特征是,需要大量判断某个字符串是否是给定单词列表中的前缀或后缀

以上,尝试实现Trie

代码

python3

class TrieNode:
  def __init__(self):
    self.children = {}
    self.isWord = False

class Trie:
    def __init__(self):
        self.root = TrieNode()

    def insert(self, word: str) -> None:
        node = self.root
        for i in word:
          if i not in node.children:
            node.children[i] = TrieNode()
          node = node.children[i]
        node.isWord = True


    def search(self, word: str) -> bool:
        node = self.root
        for i in word:
          if i not in node.children:
            return False
          node = node.children[i]
        return node.isWord


    def startsWith(self, prefix: str) -> bool:
        node = self.root
        for p in prefix:
          if p not in node.children:
              return False
          node = node.children[p]
        return True