In a Binary Search Tree (BST), for every node, all values in its left subtree are smaller, and all values in its right subtree are larger.
Click to reveal answer
beginner
Why does the BST property matter?
It allows fast searching, insertion, and deletion because we can decide to go left or right at each node, reducing the search space quickly.
Click to reveal answer
beginner
How does the BST property help in searching for a value?
You compare the value with the current node: if smaller, go left; if larger, go right. This halves the search area each step.
Click to reveal answer
intermediate
What happens if the BST property is not maintained?
The tree loses its order, making search operations inefficient, often degrading to a simple list search with slow performance.
Click to reveal answer
beginner
Explain the BST property using a real-life example.
Think of a phone book sorted by names: names before 'M' are on the left pages, names after 'M' on the right. This order helps you find a name quickly.
Click to reveal answer
What does the BST property ensure about the left subtree of a node?
AAll values are smaller than the node's value
BAll values are larger than the node's value
CValues can be any number
DValues are equal to the node's value
✗ Incorrect
The BST property requires all values in the left subtree to be smaller than the node's value.
Why is the BST property important for search operations?
AIt stores duplicate values
BIt stores values randomly
CIt allows skipping half of the tree at each step
DIt makes the tree balanced automatically
✗ Incorrect
The BST property lets us decide to go left or right, effectively skipping half the nodes each time.
If a node's value is 10, which subtree contains values greater than 10?
ALeft subtree
BBoth subtrees
CNone
DRight subtree
✗ Incorrect
The right subtree contains values greater than the node's value.
What is a consequence of not maintaining the BST property?
AFaster search
BSlower search, like a list
CMore balanced tree
DMore memory used
✗ Incorrect
Without the BST property, search becomes slow because the tree loses its order.
Which real-life example best illustrates the BST property?
AA phone book sorted by names
BA shuffled deck of cards
CA random list of numbers
DA calendar with random events
✗ Incorrect
A phone book sorted by names shows how ordering helps find things quickly, like the BST property.
Describe the BST property and explain why it helps in searching.
Think about how you decide to go left or right when searching.
You got /4 concepts.
What problems arise if the BST property is not followed in a binary tree?
Imagine searching in an unordered list versus a sorted list.
You got /4 concepts.
Practice
(1/5)
1. What is the main property that defines a Binary Search Tree (BST)?
easy
A. Left child nodes are smaller, right child nodes are larger than the parent node
B. All nodes have exactly two children
C. Nodes are arranged in level order
D. Each node has a pointer to its parent only
Solution
Step 1: Understand BST node arrangement
In a BST, for each node, all nodes in the left subtree have smaller values and all nodes in the right subtree have larger values.
Step 2: Compare options with BST definition
Left child nodes are smaller, right child nodes are larger than the parent node correctly states this property. Other options describe different tree types or incorrect properties.
Final Answer:
Left child nodes are smaller, right child nodes are larger than the parent node -> Option A
Quick Check:
BST property = Left smaller, right larger [OK]
Hint: Remember BST means left < node < right [OK]
Common Mistakes:
Confusing BST with complete binary tree
Thinking all nodes must have two children
Assuming nodes are sorted by level
2. Which of the following is the correct Python syntax to check if a node's left child value is less than the node's value in a BST?
easy
A. if node.left.value > node.value:
B. if node.left > node.value:
C. if node.left.value == node.value:
D. if node.left.value < node.value:
Solution
Step 1: Understand node attribute access
In Python, to access the left child's value, use node.left.value.
Step 2: Compare values for BST property
We check if left child's value is less than the node's value, so the condition is node.left.value < node.value.
Final Answer:
if node.left.value < node.value: -> Option D
Quick Check:
Left child value < node value syntax [OK]
Hint: Use node.left.value to access left child's value [OK]
Common Mistakes:
Comparing node.left directly without .value
Using > instead of < for left child
Using == which is incorrect for BST property
3. Consider the following Python code that inserts values into a BST:
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def insert(root, val):
if root is None:
return Node(val)
if val < root.val:
root.left = insert(root.left, val)
else:
root.right = insert(root.right, val)
return root
root = None
for v in [10, 5, 15, 3, 7]:
root = insert(root, v)
print(root.left.right.val)
What is the output?
medium
A. 5
B. 7
C. 3
D. 15
Solution
Step 1: Trace insertion order and BST structure
Insert 10 as root. Insert 5 to left of 10. Insert 15 to right of 10. Insert 3 to left of 5. Insert 7 to right of 5.
Step 2: Identify root.left.right node value
root.left is node with value 5; root.left.right is node with value 7.
Final Answer:
7 -> Option B
Quick Check:
root.left.right.val = 7 [OK]
Hint: Draw tree nodes to find left-right child quickly [OK]
Common Mistakes:
Confusing left and right child positions
Assuming insertion order is different
Printing root.left.val instead of root.left.right.val
4. The following code attempts to check if a binary tree is a BST but has a bug:
def is_bst(node, min_val=float('-inf'), max_val=float('inf')):
if node is None:
return True
if node.val < min_val or node.val > max_val:
return False
return is_bst(node.left, min_val, node.val) and is_bst(node.right, node.val, max_val)
What is the bug in this code?
medium
A. The function does not check for duplicate values properly
B. The base case should return false instead of true
C. The recursive calls swap min_val and max_val incorrectly
D. The comparison should use <= and >= instead of < and >
Solution
Step 1: Analyze BST validation logic
The code checks if node.val is between min_val and max_val, then recursively checks left and right subtrees with updated ranges.
Step 2: Identify handling of duplicates
Using < and > allows duplicates equal to node.val on both sides, which violates BST property if duplicates are not allowed or must be on one side only.
Final Answer:
The function does not check for duplicate values properly -> Option A
Quick Check:
Duplicates need special handling in BST checks [OK]
Hint: Check how duplicates are handled in BST validation [OK]
Common Mistakes:
Changing base case return value incorrectly
Swapping min_val and max_val in recursive calls
Ignoring duplicate value rules in BST
5. You have a BST where each node stores an integer. You want to find the kth smallest element efficiently. Which property of BST helps achieve this, and what is the best approach?
hard
A. BST property doesn't help; convert BST to list and sort it to find kth element
B. BST's pre-order traversal gives sorted order; perform pre-order traversal and stop at kth element
C. BST's in-order traversal gives sorted order; perform in-order traversal and stop at kth element
D. BST's post-order traversal gives sorted order; perform post-order traversal and stop at kth element
Solution
Step 1: Recall BST traversal properties
In-order traversal of BST visits nodes in ascending sorted order.
Step 2: Use in-order traversal to find kth smallest
Perform in-order traversal and count nodes visited; stop when count reaches k to get kth smallest element efficiently.
Final Answer:
BST's in-order traversal gives sorted order; perform in-order traversal and stop at kth element -> Option C
Quick Check:
In-order traversal = sorted nodes [OK]
Hint: Use in-order traversal to get sorted nodes in BST [OK]
Common Mistakes:
Using pre-order or post-order which are not sorted
Sorting after converting BST to list wastes time
Ignoring BST property for efficient search
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.