From 1fa0731ea797b2740f6fa096b3a6bf94cba3304b Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Mon, 21 Sep 2026 12:14:29 -0400 Subject: [PATCH] docs(docs): add MDX page for LeetCode 208 Implement Trie (Prefix Tree) --- .../208-implement-trie-prefix-tree.mdx | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 apps/docs/content/(hash-table)/208-implement-trie-prefix-tree.mdx diff --git a/apps/docs/content/(hash-table)/208-implement-trie-prefix-tree.mdx b/apps/docs/content/(hash-table)/208-implement-trie-prefix-tree.mdx new file mode 100644 index 0000000..5d43fbd --- /dev/null +++ b/apps/docs/content/(hash-table)/208-implement-trie-prefix-tree.mdx @@ -0,0 +1,70 @@ +--- +title: '208. Implement Trie (Prefix Tree)' +description: A trie (pronounced as "try") or prefix tree is a tree data structure used to efficiently store and retrieve keys in a dataset of strings. There are various applications of this data structure, such as autocomplete and spellchecker +sidebar: + label: 'Implement Trie (Prefix Tree)' + badge: 'Medium' +--- + +Trie + +### Example 1: +- Input: `` +- Output: `` +- Explanation: Input ["Trie", "insert", "search", "search", "startsWith", "insert", "search"] `[[]`, `["apple"]`, `["apple"]`, `["app"]`, `["app"]`, `["app"]`, ["app"]] Output [null, null, true, false, true, null, true] Explanation Trie trie = new Trie(); trie.insert("apple"); trie.search("apple"); // return True trie.search("app"); // return False trie.startsWith("app"); // return True trie.insert("app"); trie.search("app"); // return True + +### Constraints: + +- `1 <= word.length, prefix.length <= 2000` +- `word` and `prefix` consist only of lowercase English letters. +- At most 3 * 10^4 calls in total will be made to insert, search, and startsWith. + +## Solution + +```py +class TrieNode: + def __init__(self): + self.children = {} + self.endOfWord = False + + +class Trie: + def __init__(self): + self.root = TrieNode() + + def insert(self, word: str) -> None: + cur = self.root + + for c in word: + if c not in cur.children: + cur.children[c] = TrieNode() + cur = cur.children[c] + cur.endOfWord = True + + def search(self, word: str) -> bool: + cur = self.root + + for c in word: + if c not in cur.children: + return False + cur = cur.children[c] + + return cur.endOfWord + + def startsWith(self, prefix: str) -> bool: + cur = self.root + + for c in prefix: + if c not in cur.children: + return False + cur = cur.children[c] + + return True + + +# Your Trie object will be instantiated and called as such: +# obj = Trie() +# obj.insert(word) +# param_2 = obj.search(word) +# param_3 = obj.startsWith(prefix) +```