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 Tries 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: 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++, dart, elixir, erlang, Go, Java, JavaScript, Kotlin, PHP, Python, python3, racket, Ruby, Rust, Scala, Swift and TypeScript. 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(n) time and O(1) 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

Preparing this workspace.