Implement Trie (Prefix Tree)
Implement Trie (Prefix Tree) is a Medium Data Structures and Algorithms interview problem you can solve, run and submit on Thita.ai. It belongs to the Design Patterns pattern, in the Design (General/Specific) subpattern.
Problem statement
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.
Implement the Trie class:
- Trie() Initializes the trie object.
- void insert(String word) Inserts the string word into the trie.
- boolean search(String word) Returns true if the string word is in the trie (i.e., was inserted before), and false otherwise.
- boolean startsWith(String prefix) Returns true if there is a previously inserted string word that has the prefix prefix, and false otherwise.
Example 1:
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 104 calls in total will be made to insert, search, and startsWith.
Topics and companies
Topics: Hash Table, String, Design, Trie.
Reported in interviews at Amazon, Pinterest, Google, Microsoft, Oracle, Facebook, Apple, Goldman Sachs, Qualtrics.
How to practise Implement Trie (Prefix Tree) on Thita.ai
Starter code is provided in C, C#, C++, Go, Java, JavaScript and Python. Your solution runs against 5 test cases for this problem, with the AI coach available for a hint when you are stuck rather than a finished answer. The reference solution runs in O(L) per operation, where L is the length of the word or prefix. Each insert, search, or startsWith traverses at most L nodes. time and O(N * L), where N is the number of inserted words and L is the average length of the words. Each unique prefix creates new nodes. space.
Open Implement Trie (Prefix Tree) in the code editor, or read the Implement Trie (Prefix Tree) editorial for a worked solution with its approach and complexity analysis.
Where Implement Trie (Prefix Tree) sits in the DSA pattern sheet
- Design Patterns pattern guide
- Design (General/Specific) subpattern
- The full DSA patterns sheet
- All coding practice problems
Problems related to Implement Trie (Prefix Tree)
Other problems that use the same Design (General/Specific) and Design Patterns techniques:
- Design Add and Search Words Data Structure — Medium, same subpattern
- Longest Word in Dictionary — Easy, same subpattern
- Prefix and Suffix Search — Hard, same subpattern
- Replace Words — Medium, same subpattern
- Word Squares — Hard, same subpattern
- All O`one Data Structure — Hard, same pattern