Back to Practice Dashboard
Top 150 InterviewMedium

Implement Trie Prefix Tree

Learn how to solve the 'Implement Trie Prefix Tree' problem. This detailed resource details brute force and optimized approaches.

Problem Statement

Medium

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.

- insert(word: str) Inserts the string word into the trie.

- search(word: str) -> bool Returns True if the string word is in the trie (i.e., was inserted before), and False otherwise.

- startsWith(prefix: str) -> bool Returns True if there is a previously inserted string word that has the prefix prefix, and False otherwise.

Input is a list of operations and arguments. Implement a function trie(operations: list, arguments: list) -> list that returns a list of results (None for constructor/insert, bool for search/startsWith).

Constraints
  • 1 <= len(word), len(prefix) <= 2000
  • word and prefix consist of lowercase English letters
  • At most 3 * 10^4 calls will be made in total to insert, search, and startsWith

Examples

Example 1
Input
operations = ["Trie", "insert", "search", "search", "startsWith", "insert", "search"], arguments = [[], ["apple"], ["apple"], ["app"], ["app"], ["app"], ["app"]]
Output
[None, None, True, False, True, None, True]
Explanation

Trie initialized. insert("apple"). search("apple") returns True. search("app") returns False. startsWith("app") returns True. insert("app"). search("app") returns True.

Need a Hint?
Analyze the input constraints. Try sorting first (O(n log n)) or using a hash map/set to track seen elements in O(n) time.
Edge Cases to Watch
  • Empty list or null input variables
  • Single item lists/arrays
  • Extremely large input bounds causing integer or stack overflow

Ready to Solve?

Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.

Open in Editor