0
0
DSA C++programming~10 mins

Prefix Search Using Trie in DSA C++ - Execution Trace

Choose your learning style9 modes available
Concept Flow - Prefix Search Using Trie
Start at root node
For each character in prefix
Check if character child exists?
NoPrefix not found
Yes
Move to child node
Repeat for next character
All prefix chars found
Collect all words from current node
Return list of words with prefix
Start from the root and follow each prefix character down the trie. If all prefix characters exist, collect all words below that node.
Execution Sample
DSA C++
insert("cat");
insert("car");
insert("dog");
searchPrefix("ca");
Insert words 'cat', 'car', 'dog' into trie, then search for words starting with prefix 'ca'.
Execution Table
StepOperationNodes in TriePointer ChangesVisual State
1Insert 'cat' char 'c'rootroot -> c node createdroot -> c -> null
2Insert 'cat' char 'a'root -> cc -> a node createdroot -> c -> a -> null
3Insert 'cat' char 't'root -> c -> aa -> t node created (end of word)root -> c -> a -> t*
4Insert 'car' char 'c'root -> c -> a -> t*c node exists, no changeroot -> c -> a -> t*
5Insert 'car' char 'a'root -> c -> a -> t*a node exists, no changeroot -> c -> a -> t*
6Insert 'car' char 'r'root -> c -> a -> t*a -> r node created (end of word)root -> c -> a -> t* -> r*
7Insert 'dog' char 'd'root -> c -> a -> t* -> r*root -> d node createdroot -> c -> a -> t* -> r* root -> d -> null
8Insert 'dog' char 'o'root -> c -> a -> t* -> r* root -> dd -> o node createdroot -> c -> a -> t* -> r* root -> d -> o -> null
9Insert 'dog' char 'g'root -> c -> a -> t* -> r* root -> d -> oo -> g node created (end of word)root -> c -> a -> t* -> r* root -> d -> o -> g*
10Search prefix 'ca' char 'c'root -> c -> a -> t* -> r* root -> d -> o -> g*Move to c nodeAt node c
11Search prefix 'ca' char 'a'At node cMove to a nodeAt node a
12Prefix 'ca' found, collect wordsAt node aTraverse children t* and r*Words found: 'cat', 'car'
💡 Prefix 'ca' fully matched, words collected from node 'a'.
Variable Tracker
VariableStartAfter Step 3After Step 6After Step 9After Step 12
Trie Nodesrootroot -> c -> a -> t*root -> c -> a -> t* -> r*root -> c -> a -> t* -> r* root -> d -> o -> g*No change, at node a for prefix 'ca'
Current Noderootrootrootrootnode a
Words Collected[][][][]["cat", "car"]
Key Moments - 3 Insights
Why do we create new nodes only when the character child does not exist?
Because if the child node for a character already exists (see steps 4 and 5), we reuse it to avoid duplicates and keep the trie compact.
How do we know when a word ends in the trie?
We mark the last character node of a word with a special flag (shown as * in Visual State), as seen in steps 3, 6, and 9.
What happens if the prefix is not found during search?
The search stops immediately when a character child does not exist (not shown here), indicating no words with that prefix.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 6, which new node is created?
ANode 'd' as child of root
BNode 't' as child of 'a'
CNode 'r' as child of 'a'
DNode 'o' as child of 'd'
💡 Hint
Check the 'Pointer Changes' and 'Visual State' columns at step 6.
At which step does the trie first contain the word 'dog'?
AStep 9
BStep 8
CStep 7
DStep 10
💡 Hint
Look for the step where the last character node 'g' is created and marked as end of word.
According to variable_tracker, what is the current node after step 12?
Aroot
Bnode a
Cnode c
Dnode t
💡 Hint
Check the 'Current Node' row in variable_tracker after step 12.
Concept Snapshot
Trie stores words as paths from root to nodes.
Insert: create nodes for chars if missing.
Mark end of word nodes.
Prefix search: follow prefix chars.
If prefix found, collect all words below.
Efficient for prefix-based queries.
Full Transcript
This visual trace shows how a trie is built by inserting words 'cat', 'car', and 'dog'. Each character is a node. If a node for a character exists, it is reused. The end of a word is marked with a special flag. Searching for prefix 'ca' involves moving from root to 'c' node, then to 'a' node. Once prefix is matched, all words below are collected. The execution table tracks each insertion and search step, showing node creation and traversal. Variable tracker shows trie structure and current node changes. Key moments clarify why nodes are created only if missing, how word ends are marked, and what happens if prefix is missing. The quiz tests understanding of node creation, word insertion, and search position. The snapshot summarizes trie usage for prefix search.