A Trie is a tree-like data structure that stores strings by sharing common prefixes. Each node represents a character, and paths from root to nodes form words or prefixes.
Click to reveal answer
beginner
How does a Hash Map store data for prefix matching?
A Hash Map stores key-value pairs where keys are usually full strings. For prefix matching, it requires checking all keys or storing prefixes explicitly, which can be inefficient.
Click to reveal answer
intermediate
Why is Trie more efficient than Hash Map for prefix matching?
Trie allows direct traversal along characters of the prefix, making prefix search fast and efficient. Hash Map lacks this structure and may need to check many keys.
Click to reveal answer
intermediate
What is a downside of using Trie compared to Hash Map?
Trie can use more memory because it stores nodes for each character, even if some prefixes are rare. Hash Map can be simpler and use less memory for exact key lookups.
Click to reveal answer
intermediate
In which scenario is Hash Map preferred over Trie for prefix matching?
When the dataset is small or prefix queries are rare, Hash Map is simpler and faster to implement. Trie is better for large datasets with many prefix queries.
Click to reveal answer
Which data structure is designed to efficiently handle prefix searches?
AHash Map
BTrie
CStack
DQueue
✗ Incorrect
Trie stores characters in a tree structure allowing fast prefix traversal.
What is a common disadvantage of using Trie compared to Hash Map?
ACannot store strings
BSlower prefix search
CUses more memory
DNo support for exact match
✗ Incorrect
Trie nodes for each character can consume more memory than Hash Map keys.
How does Hash Map perform prefix matching?
AChecking all keys or storing prefixes explicitly
BDirect traversal by characters
CUsing a tree structure
DUsing linked lists
✗ Incorrect
Hash Map requires scanning keys or storing prefixes, which is less efficient.
When is Hash Map preferred over Trie for prefix matching?
ALarge dataset with many prefix queries
BWhen keys are numeric
CWhen memory is unlimited
DSmall dataset or rare prefix queries
✗ Incorrect
Hash Map is simpler and faster for small datasets or few prefix queries.
What does each node in a Trie represent?
AA character
BA number
CA full word
DA hash code
✗ Incorrect
Each Trie node represents a single character in the stored strings.
Explain how a Trie supports efficient prefix matching compared to a Hash Map.
Think about how each character leads to the next in a Trie.
You got /4 concepts.
Describe scenarios where you would choose a Hash Map over a Trie for prefix matching.
Consider dataset size and frequency of prefix searches.
You got /4 concepts.
Practice
(1/5)
1. Which data structure is generally more efficient for prefix matching in a large set of strings?
easy
A. Trie, because it stores prefixes explicitly and allows fast prefix queries
B. Hash Map, because it stores keys with constant time lookup
C. Array, because it stores elements in order
D. Linked List, because it allows sequential access
Solution
Step 1: Understand prefix matching requirements
Prefix matching means finding all strings that start with a given prefix efficiently.
Step 2: Compare Trie and Hash Map for prefix queries
Trie stores prefixes explicitly in its structure, allowing quick traversal to all words sharing a prefix. Hash Map only allows exact key lookups, not prefix searches.
Final Answer:
Trie, because it stores prefixes explicitly and allows fast prefix queries -> Option A
Quick Check:
Prefix matching = Trie [OK]
Hint: Trie stores prefixes; Hash Map does not support prefix search [OK]
Assuming arrays or linked lists are efficient for prefix queries
2. Which of the following TypeScript code snippets correctly initializes a Trie node for prefix matching?
easy
A. class TrieNode { children: object = {}; isEnd: number = 0; }
B. class TrieNode { children: string[] = []; isEnd: boolean = true; }
C. class TrieNode { children: Map = new Map(); isEnd: boolean = false; }
D. class TrieNode { children: Map = new Map(); isEnd: boolean = false; }
Solution
Step 1: Identify correct data types for TrieNode properties
Children should map characters (string) to TrieNode objects. isEnd should be boolean to mark word end.
Step 2: Check each option's correctness
class TrieNode { children: Map = new Map(); isEnd: boolean = false; } uses Map and boolean isEnd, which is correct. Others use wrong types or incorrect isEnd values.
Final Answer:
class TrieNode { children: Map = new Map(); isEnd: boolean = false; } -> Option C
Quick Check:
TrieNode children = Map [OK]
Hint: Trie children map chars to nodes; isEnd is boolean [OK]
Common Mistakes:
Using array instead of Map for children
Setting isEnd as number instead of boolean
Mapping children with wrong key or value types
3. What will be the output of the following TypeScript code snippet?
Map.has(key) returns true only if exact key exists. 'app' and 'apple' are keys, 'appl' is not.
Step 2: Evaluate console.log outputs
map.has('app') is true; map.has('appl') is false because 'appl' is not a key.
Final Answer:
true\nfalse -> Option D
Quick Check:
Exact keys only: 'app' true, 'appl' false [OK]
Hint: Map.has checks exact keys, not prefixes [OK]
Common Mistakes:
Assuming map.has supports prefix matching
Confusing keys 'appl' and 'apple'
Expecting true for partial keys
4. Consider this buggy TypeScript Trie insert method:
insert(word: string) {
let node = this.root;
for (let char of word) {
if (!node.children.has(char)) {
node.children.set(char, new TrieNode());
}
node = node.children.get(char);
}
node.isEnd = true;
}
What is the main issue causing a runtime error?
medium
A. node.children.get(char) can return undefined, causing assignment to node to fail
B. The loop variable char is not declared properly
C. The isEnd property is set before the loop
D. The root node is not initialized
Solution
Step 1: Analyze node.children.get(char) usage
Even after checking node.children.has(char), node.children.get(char) can theoretically return undefined if the Map is modified concurrently or due to incorrect initialization.
Step 2: Identify runtime error cause
Assigning undefined to node causes subsequent property access to fail, leading to runtime error.
Final Answer:
node.children.get(char) can return undefined, causing assignment to node to fail -> Option A
Quick Check:
Ensure node.children.get(char) is not undefined before assignment [OK]
Hint: Check that node.children.get(char) returns a valid TrieNode before assignment [OK]
Overlooking need for root initialization in constructor
Assuming object-style children access instead of Map methods
5. You want to implement a prefix search feature that returns all words starting with a given prefix from a large dictionary. Which approach is best and why?
// Approach 1: Store all words in a Hash Map and check each key for prefix match
// Approach 2: Build a Trie from all words and traverse to prefix node to collect matches
hard
A. Approach 1 is better because Hash Map lookups are O(1) and prefix checks are fast
B. Approach 2 is better because Trie traversal to prefix node is efficient and collects matches quickly
C. Both approaches are equally efficient for prefix search
D. Neither approach works well; use a sorted array with binary search instead
Solution
Step 1: Evaluate Approach 1 (Hash Map with prefix checks)
Hash Map allows O(1) exact lookups but requires checking every key for prefix, which is O(n) and inefficient for large data.
Step 2: Evaluate Approach 2 (Trie traversal)
Trie stores prefixes explicitly; traversing to prefix node is O(k) where k is prefix length, then collecting matches is efficient.
Step 3: Compare efficiency and scalability
Trie approach scales better for prefix search due to structured prefix storage and avoids scanning all keys.
Final Answer:
Approach 2 is better because Trie traversal to prefix node is efficient and collects matches quickly -> Option B
Quick Check:
Prefix search = Trie traversal [OK]
Hint: Trie stores prefixes; Hash Map needs full scan for prefix [OK]
Common Mistakes:
Assuming Hash Map prefix checks are fast
Ignoring Trie traversal efficiency
Thinking both approaches perform the same
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.