A Trie is a tree-like data structure that stores strings by sharing common prefixes. Each node represents a character, and paths from the root to leaves form words.
Click to reveal answer
beginner
How does a Hash Map handle prefix matching?
A Hash Map stores full strings as keys. To find prefixes, it requires checking all keys or storing prefixes separately, which can be inefficient for prefix queries.
Click to reveal answer
intermediate
Why is Trie more efficient than Hash Map for prefix matching?
Trie allows direct traversal along the prefix characters, making prefix searches 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 uses less memory for storing only full keys.
Click to reveal answer
intermediate
In what 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 uses less memory, making it a good choice over Trie.
Click to reveal answer
Which data structure allows fast prefix search by traversing characters?
AStack
BHash Map
CArray
DTrie
✗ Incorrect
Trie stores characters in nodes allowing direct traversal for prefix matching.
What is a main disadvantage of using a Hash Map for prefix matching?
AHigh memory usage
BSlow prefix search
CCannot store strings
DComplex insertion
✗ Incorrect
Hash Map requires checking many keys for prefix search, making it slower.
Which data structure uses more memory due to storing nodes for each character?
AHash Map
BQueue
CTrie
DLinked List
✗ Incorrect
Trie stores nodes for every character, increasing memory usage.
When is Hash Map preferred over Trie for prefix matching?
ASmall dataset with few prefix queries
BWhen memory is unlimited
CLarge dataset with many prefix queries
DWhen keys are numeric
✗ Incorrect
Hash Map is simpler and uses less memory for small datasets with few prefix queries.
What does each node in a Trie represent?
AA character
BA full word
CA number
DA hash value
✗ Incorrect
Each node in a Trie represents a single character.
Explain how Trie and Hash Map differ in handling prefix matching.
Think about how each structure stores and searches strings.
You got /4 concepts.
Describe scenarios where Trie is better than Hash Map and vice versa 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 checking if a prefix exists in a large set of strings?
easy
A. Trie, because it stores prefixes explicitly for fast lookup
B. Hash Map, because it stores all strings as keys for quick access
C. Array, because it allows sequential search of prefixes
D. Linked List, because it maintains order of insertion
Solution
Step 1: Understand prefix matching requirement
Prefix matching means checking if any string starts with a given prefix efficiently.
Step 2: Compare Trie and Hash Map for prefix search
Trie stores prefixes explicitly in its nodes, allowing quick traversal to check prefixes. Hash Map stores full strings as keys, so prefix search requires checking multiple keys or extra processing.
Final Answer:
Trie, because it stores prefixes explicitly for fast lookup -> Option A
Quick Check:
Prefix search = Trie [OK]
Hint: Trie stores prefixes explicitly, ideal for prefix search [OK]
Common Mistakes:
Thinking hash map keys support prefix search directly
Confusing prefix search with exact match
Assuming arrays or linked lists are efficient for prefix search
2. Which of the following is the correct way to insert a word into a Trie node in Python?
easy
A. node[word] = True
B. node.add(word)
C. node[word[i]] = TrieNode()
D. node.children[word[i]] = TrieNode()
Solution
Step 1: Understand Trie node structure
Each Trie node typically has a dictionary called children to store next characters as keys.
Step 2: Insert character at position i
To insert a character, assign a new TrieNode to node.children[word[i]].
Hint: Insert chars by assigning new TrieNode to node.children[word[i]] [OK]
Common Mistakes:
Using node[word] = True for whole word
Using node[word[i]] = TrieNode() without .children
Calling non-existent add() method
3. What will be the output of the following Python code snippet?
class TrieNode:
def __init__(self):
self.children = {}
self.end = False
class Trie:
def __init__(self):
self.root = TrieNode()
def insert(self, word):
node = self.root
for ch in word:
if ch not in node.children:
node.children[ch] = TrieNode()
node = node.children[ch]
node.end = True
def starts_with(self, prefix):
node = self.root
for ch in prefix:
if ch not in node.children:
return False
node = node.children[ch]
return True
trie = Trie()
trie.insert('apple')
print(trie.starts_with('app'))
print(trie.starts_with('apl'))
medium
A. False\nFalse
B. True\nFalse
C. True\nTrue
D. False\nTrue
Solution
Step 1: Insert 'apple' into Trie
Each character 'a', 'p', 'p', 'l', 'e' is added as nodes. The end flag is set at 'e'.
Step 2: Check starts_with for 'app' and 'apl'
'app' exists as prefix nodes, so returns True. 'apl' fails at 'l' because 'l' is child of 'p' only after 'pp', so returns False.
Final Answer:
True
False -> Option B
Quick Check:
Prefix 'app' found = True, 'apl' not found = False [OK]
Hint: Check prefix nodes exist step-by-step for True/False [OK]
Common Mistakes:
Assuming 'apl' is prefix of 'apple'
Confusing end flag with prefix existence
Mixing up True/False order in output
4. The following code attempts to check if a prefix exists in a hash map of words. What is the main issue?
words = {'apple': 1, 'app': 2, 'banana': 3}
prefix = 'ap'
if prefix in words:
print('Prefix found')
else:
print('Prefix not found')
medium
A. The prefix variable is not defined
B. Syntax error in if condition
C. Hash map keys do not support prefix matching directly
D. The print statements are incorrect
Solution
Step 1: Understand hash map key lookup
Checking 'prefix in words' looks for exact key match, not prefix match.
Step 2: Identify prefix matching limitation
Hash maps do not support partial key matching; prefix must be checked by iterating keys or using a Trie.
Final Answer:
Hash map keys do not support prefix matching directly -> Option C
Quick Check:
Prefix search in hash map = no direct support [OK]
Hint: Hash maps need full key match; prefix needs iteration or Trie [OK]
Common Mistakes:
Thinking 'prefix in dict' checks partial keys
Assuming syntax error causes failure
Ignoring need for iteration or Trie for prefix
5. You have a list of 1 million words and want to quickly find all words starting with a given prefix. Which approach is best and why?
A) Store all words in a hash map and check each key for prefix match.
B) Build a Trie from all words and traverse nodes for the prefix.
C) Store words in a list and use list comprehension to filter prefixes.
D) Use a linked list to store words and traverse to find prefix matches.
hard
A. Trie allows direct traversal to prefix node, fast for large data
B. Hash map with prefix check on all keys is efficient for large data
C. List comprehension is fastest for prefix search in large data
D. Linked list traversal is best for prefix matching in large data
Solution
Step 1: Analyze each data structure for prefix search
Hash map requires checking all keys for prefix, which is slow for 1 million words. List and linked list require scanning all words, also slow.
Step 2: Understand Trie advantage
Trie stores prefixes as nodes, so traversing to prefix node is fast and does not require scanning all words.
Final Answer:
Trie allows direct traversal to prefix node, fast for large data -> Option A
Quick Check:
Large prefix search = Trie traversal [OK]
Hint: Trie traversal beats scanning all keys for large prefix search [OK]
Common Mistakes:
Choosing hash map or list for large prefix search
Ignoring Trie prefix traversal speed
Assuming linked list is efficient for prefix search
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.