A BST is a binary tree where each node's left child has a smaller value and the right child has a larger value than the node itself. This property helps in faster searching.
Click to reveal answer
beginner
How does a BST improve search efficiency compared to a plain binary tree?
BST uses the order property to decide which subtree to search, reducing the search space by half each step, leading to average search time of O(log n) instead of O(n) in plain binary trees.
Click to reveal answer
beginner
Why is a plain binary tree less efficient for search operations?
A plain binary tree has no order property, so to find a value, you may need to check every node, resulting in O(n) time complexity.
Click to reveal answer
beginner
What real-life analogy helps understand why BST is better than a plain binary tree for searching?
Like a phone book sorted by names (BST), you can quickly find a name by skipping half the book each time. A plain list (plain binary tree) requires checking every name one by one.
Click to reveal answer
intermediate
What is the worst-case time complexity of search in a BST and when does it happen?
The worst-case time is O(n), which happens when the BST becomes skewed (like a linked list) due to inserting sorted data without balancing.
Click to reveal answer
What property makes BST faster for searching than a plain binary tree?
ANodes are arranged in sorted order
BNodes have more children
CNodes store extra data
DNodes are connected randomly
✗ Incorrect
BST nodes are arranged so left child < parent < right child, enabling faster search.
What is the average time complexity of searching in a balanced BST?
AO(n)
BO(n log n)
CO(log n)
DO(1)
✗ Incorrect
Balanced BST reduces search space by half each step, leading to O(log n) time.
In which case does BST search degrade to O(n)?
AWhen tree has duplicate values
BWhen tree is empty
CWhen tree is balanced
DWhen tree is skewed
✗ Incorrect
A skewed BST behaves like a linked list, causing O(n) search time.
Which data structure is like a phone book for quick searching?
APlain binary tree
BBinary Search Tree
CLinked list
DStack
✗ Incorrect
BST is like a sorted phone book allowing quick search.
Why is a plain binary tree not efficient for searching?
AIt has no order property
BIt has too many nodes
CIt uses too much memory
DIt is always balanced
✗ Incorrect
Without order, search must check every node, making it slow.
Explain why a Binary Search Tree is preferred over a plain binary tree for searching data.
Think about how sorting helps find things faster.
You got /4 concepts.
Describe a real-life example that helps understand the advantage of BST over a plain binary tree.
Imagine looking up a name in a phone book.
You got /4 concepts.
Practice
(1/5)
1. Why is a Binary Search Tree (BST) preferred over a plain Binary Tree for searching operations?
easy
A. Because BST keeps elements in sorted order allowing faster search
B. Because BST uses less memory than a plain Binary Tree
C. Because BST nodes can have more than two children
D. Because BST does not require pointers to child nodes
Solution
Step 1: Understand the structure of BST
A BST stores elements so that left child nodes are smaller and right child nodes are larger than the parent node, maintaining sorted order.
Step 2: Compare search efficiency
This sorted structure allows searching by comparing values and moving left or right, reducing search time to O(log n) on average, unlike a plain Binary Tree which has no order and requires O(n) search.
Final Answer:
Because BST keeps elements in sorted order allowing faster search -> Option A
Quick Check:
BST sorted order = faster search [OK]
Hint: BST sorts nodes for quick search, plain tree does not [OK]
Common Mistakes:
Thinking BST uses less memory than plain tree
Confusing number of children allowed in BST
Assuming BST nodes don't have child pointers
2. Which of the following is the correct way to declare a node structure for a BST in C++?
easy
A. struct Node { int data; Node* parent; };
B. struct Node { int data; Node* left; Node* right; };
C. struct Node { int data; Node left; Node right; };
D. struct Node { int data; Node* next; };
Solution
Step 1: Identify correct pointer usage for children
A BST node must have pointers to left and right child nodes, so Node* left and Node* right are needed.
Step 2: Check each option
struct Node { int data; Node* left; Node* right; }; correctly declares pointers to left and right children. struct Node { int data; Node left; Node right; }; incorrectly uses Node left and right (not pointers). struct Node { int data; Node* parent; }; only has parent pointer, missing children. struct Node { int data; Node* next; }; uses next pointer which is for linked lists, not BST.
Final Answer:
struct Node { int data; Node* left; Node* right; }; -> Option B
Quick Check:
BST node needs left and right pointers [OK]
Hint: BST nodes have left and right child pointers [OK]
Common Mistakes:
Using objects instead of pointers for children
Confusing parent pointer with child pointers
Using 'next' pointer like in linked lists
3. Consider the following code inserting values into a BST:
Step 1: Understand insertion order and BST property
Values inserted are 10 (root), 5 (left of 10), 15 (right of 10), 7 (right of 5). BST property keeps left < parent < right.
Step 2: Perform inorder traversal
Inorder traversal visits left subtree, node, then right subtree. So nodes visited in order: 5, 7, 10, 15.
Final Answer:
5 7 10 15 -> Option C
Quick Check:
Inorder traversal of BST = sorted order [OK]
Hint: Inorder traversal of BST prints sorted values [OK]
Common Mistakes:
Confusing preorder or postorder with inorder
Misplacing 7 as left child of 10
Ignoring BST insertion rules
4. The following code attempts to insert a value into a BST but has a bug:
Node* insert(Node* root, int val) {
if (root == nullptr) {
Node* n = new Node{val, nullptr, nullptr};
return n;
}
if (val <= root->data) {
insert(root->left, val);
} else {
insert(root->right, val);
}
return root;
}
What is the bug and how to fix it?
medium
A. The recursive calls do not assign returned nodes to root's children; fix by root->left = insert(root->left, val) and root->right = insert(root->right, val)
B. The base case is wrong; should check if val == root->data
C. The function should return void instead of Node*
D. The comparison should be val < root->data instead of val <= root->data
Solution
Step 1: Identify missing assignment in recursion
The recursive calls insert(root->left, val) and insert(root->right, val) do not update root's left or right pointers with the returned new nodes.
Step 2: Fix by assigning returned nodes
Assign the recursive call results back: root->left = insert(root->left, val); root->right = insert(root->right, val); so the tree links update correctly.
Final Answer:
The recursive calls do not assign returned nodes to root's children; fix by root->left = insert(root->left, val) and root->right = insert(root->right, val) -> Option A
Quick Check:
Assign recursive insert results to children [OK]
Hint: Always assign recursive insert results to child pointers [OK]
Common Mistakes:
Ignoring returned node from recursion
Changing base case unnecessarily
Changing comparison operator without reason
5. You have a plain Binary Tree and a BST both containing the same 7 unique values. You want to find if a value exists in the tree. Which of the following statements best explains why searching in the BST is generally faster than in the plain Binary Tree?
hard
A. BST uses hashing internally to find values instantly
B. BST stores values in a linked list internally, making search O(1)
C. Plain Binary Tree nodes have no pointers, so search is impossible
D. BST allows skipping half of the nodes at each step due to ordering, reducing search time to O(log n) on average
Solution
Step 1: Understand search in BST vs plain Binary Tree
BST maintains sorted order so at each node, you decide to go left or right, effectively halving the search space each step.
Step 2: Compare time complexities
This halving leads to average search time O(log n). Plain Binary Tree has no order, so search may check every node, O(n) time.
Final Answer:
BST allows skipping half of the nodes at each step due to ordering, reducing search time to O(log n) on average -> Option D
Quick Check:
BST halves search space each step [OK]
Hint: BST halves search space; plain tree searches all nodes [OK]
Common Mistakes:
Thinking BST uses linked lists internally
Believing plain Binary Tree has no pointers
Assuming BST uses hashing
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.