📖 Scenario: You are working with a phone book application that stores contacts in a Binary Search Tree (BST). Each contact has a unique phone number. You want to find if a particular phone number exists in the phone book.
🎯 Goal: Build a simple BST and write code to search for a given phone number in it.
📋 What You'll Learn
Create a BST node structure with integer phone numbers
Manually create a BST with given phone numbers
Write a function to search for a phone number in the BST
Print whether the phone number is found or not
💡 Why This Matters
🌍 Real World
BSTs are used in phone books, contact lists, and databases to quickly find information by key.
💼 Career
Understanding BST search is fundamental for software engineers working with data storage, retrieval, and optimization.
Progress0 / 4 steps
1
Create BST Node Structure and Root Node
Create a struct called Node with an int data, and two pointers left and right of type Node*. Then create a Node* variable called root and initialize it with a new node containing the value 50.
DSA C++
Hint
Think of a tree node as a box holding a number and two pointers to other boxes.
2
Add Left and Right Child Nodes to Root
Add two child nodes to root: set root->left to a new node with value 30 and root->right to a new node with value 70. Both children should have their left and right pointers set to nullptr.
DSA C++
Hint
Attach smaller number to the left and bigger number to the right of root.
3
Write a Function to Search for a Value in BST
Write a function called searchBST that takes a Node* called root and an int key. It should return true if key is found in the BST, otherwise false. Use the BST property to decide whether to search left or right.
DSA C++
Hint
Check if current node is null or matches key. If not, go left if key is smaller, else right.
4
Search for a Phone Number and Print Result
Call searchBST with root and the key 70. Print "Found" if the function returns true, otherwise print "Not Found".
DSA C++
Hint
Use an if statement to print "Found" if searchBST returns true, else "Not Found".
Practice
(1/5)
1. What is the main purpose of the search operation in a Binary Search Tree (BST)?
easy
A. To find whether a given value exists in the BST
B. To insert a new node in the BST
C. To delete a node from the BST
D. To traverse all nodes in the BST
Solution
Step 1: Understand the purpose of search in BST
The search operation is used to check if a specific value is present in the BST.
Start at root 10, 15 > 10, go right to 20. Then 15 < 20, go left to 15.
Step 2: Check node data at 15
Node data matches key 15, so function returns true and prints "Found".
Final Answer:
Found -> Option A
Quick Check:
Key found in BST = Found [OK]
Hint: Follow BST rules left/right to find key [OK]
Common Mistakes:
Stopping search too early
Confusing left and right child directions
Assuming key not found when present
4. Identify the error in the following BST search function and choose the correct fix:
bool search(Node* root, int key) {
if (root == nullptr) return false;
if (root->data == key) return true;
if (key > root->data) return search(root->left, key);
else return search(root->right, key);
}
medium
A. Remove base case for nullptr
B. Change return type to int
C. Swap left and right in recursive calls; should be key < root->data for left
D. Add print statements for debugging
Solution
Step 1: Analyze recursive calls logic
For BST, if key < root->data, search left; if key > root->data, search right.
Step 2: Identify incorrect direction
Code searches left when key > root->data, which is wrong. Left subtree has smaller values.
Step 3: Correct the recursive calls
Swap left and right calls: if (key < root->data) search left; else search right.
Final Answer:
Swap left and right in recursive calls; should be key < root->data for left -> Option C
Quick Check:
BST property fixes search direction [OK]
Hint: Left subtree < node, right subtree > node [OK]
Common Mistakes:
Mixing left and right subtree directions
Ignoring base case
Changing return type unnecessarily
5. Given a BST with nodes inserted in this order: 25, 15, 50, 10, 22, 35, 70. You want to search for the value 22. How many nodes will the search function visit before finding 22?
hard
A. 2
B. 5
C. 4
D. 3
Solution
Step 1: Build BST structure from insertion order
Insert 25 (root), then 15 (left of 25), 50 (right of 25), 10 (left of 15), 22 (right of 15), 35 (left of 50), 70 (right of 50).
Step 2: Trace search path for 22
Start at 25 (visit 1), 22 < 25 go left to 15 (visit 2), 22 > 15 go right to 22 (visit 3), found key.
Final Answer:
3 -> Option D
Quick Check:
Nodes visited = 3 [OK]
Hint: Count nodes visited following BST search path [OK]
Common Mistakes:
Counting nodes not visited
Misplacing nodes in BST
Stopping count before finding key
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.