A Binary Search Tree is a tree where each node has at most two children. For every node, all nodes in its left subtree have smaller values, and all nodes in its right subtree have larger values.
Click to reveal answer
beginner
What property must hold true for all nodes in a BST?
For each node, all values in the left subtree must be less than the node's value, and all values in the right subtree must be greater than the node's value.
Click to reveal answer
intermediate
How can you check if a binary tree is a BST using recursion?
By recursively checking if each node's value is within a valid range (min and max). Initially, the range is infinite. For left child, max is parent node's value; for right child, min is parent node's value.
Click to reveal answer
intermediate
How can you validate a BST using inorder traversal?
By performing an inorder traversal and checking if the values are sorted in ascending order. This is both necessary and sufficient to confirm the tree is a BST.
Click to reveal answer
beginner
What is the time complexity of validating a BST using the min-max recursion method?
The time complexity is O(n), where n is the number of nodes, because each node is visited once during the recursion.
Click to reveal answer
Which condition must hold true for a node's left child in a BST?
ANo condition needed
BLeft child's value is greater than the node's value
CLeft child's value is equal to the node's value
DLeft child's value is less than the node's value
✗ Incorrect
In a BST, the left child's value must be less than the node's value.
What is the main idea behind the min-max method to validate a BST?
ACheck if the tree is balanced
BCheck if the tree has no cycles
CCheck if each node's value lies between allowed min and max values
DCheck if the tree has only two children per node
✗ Incorrect
The min-max method ensures each node's value is within a valid range to maintain BST properties.
What traversal order can be used to check if a tree is BST by verifying sorted order?
APreorder
BInorder
CPostorder
DLevel order
✗ Incorrect
Inorder traversal of a BST produces sorted values in ascending order.
What is the time complexity of validating a BST using recursion with min-max limits?
AO(n)
BO(n log n)
CO(n^2)
DO(log n)
✗ Incorrect
Each node is visited once, so the time complexity is O(n).
If a node violates the BST property, what should the validation function return?
AFalse
BIgnore the node
CContinue checking
DTrue
✗ Incorrect
If any node violates the BST property, the tree is not a BST, so return False.
Explain how to validate if a binary tree is a BST using the min-max recursion approach.
Think about how the allowed value range changes as you go down the tree.
You got /5 concepts.
Explain how inorder traversal can be used to validate a BST.
Inorder visits nodes in left-root-right order, which is ascending in a BST.
You got /4 concepts.
Practice
(1/5)
1. What does it mean for a binary tree to be a Binary Search Tree (BST)?
easy
A. The tree is balanced with equal height on both sides.
B. Every node has exactly two children.
C. All nodes have the same value.
D. Every node's left subtree contains values less than the node, and right subtree contains values greater.
Solution
Step 1: Understand BST property
A BST requires that for each node, all values in the left subtree are smaller and all values in the right subtree are larger.
Step 2: Compare options with definition
Every node's left subtree contains values less than the node, and right subtree contains values greater. matches this property exactly, while others describe different tree properties.
Final Answer:
Every node's left subtree contains values less than the node, and right subtree contains values greater. -> Option D
Quick Check:
BST property = Every node's left subtree contains values less than the node, and right subtree contains values greater. [OK]
Hint: Remember: left < node < right for BST [OK]
Common Mistakes:
Confusing BST with balanced tree
Thinking all nodes must have two children
Assuming all values are equal
2. Which of the following Python function signatures is correct to check if a binary tree is a BST?
To validate BST, we usually pass the node and the allowed min and max value range to check subtree values.
Step 2: Match function signatures
def validateBST(root, min_val, max_val): includes root, min_val, and max_val parameters, which is the standard approach for BST validation.
Final Answer:
def validateBST(root, min_val, max_val): -> Option B
Quick Check:
Function with min and max parameters = def validateBST(root, min_val, max_val): [OK]
Hint: BST check needs min and max limits [OK]
Common Mistakes:
Using no parameters or wrong parameters
Missing min and max value checks
Incorrect function naming causing confusion
3. What will be the output of the following code snippet?
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def is_bst(node, min_val=float('-inf'), max_val=float('inf')):
if not node:
return True
if not (min_val < node.val < max_val):
return False
return (is_bst(node.left, min_val, node.val) and
is_bst(node.right, node.val, max_val))
root = Node(10)
root.left = Node(5)
root.right = Node(15)
root.left.left = Node(1)
root.left.right = Node(12)
print(is_bst(root))
medium
A. Error
B. True
C. False
D. None
Solution
Step 1: Trace the tree structure and BST property
The node with value 12 is in the left subtree of 10 but greater than 10, violating BST rules.
Step 2: Check the is_bst function logic
The function returns False because 12 is not less than 10 (max_val for left subtree), so the condition fails.
Final Answer:
False -> Option C
Quick Check:
Left subtree value > root = False [OK]
Hint: Check if left subtree values < node [OK]
Common Mistakes:
Ignoring subtree value ranges
Assuming all left children are smaller without checking ancestors
Confusing node values with their immediate parent only
4. Find the bug in the following BST validation function:
def is_bst(node, min_val=None, max_val=None):
if node is None:
return True
if min_val and node.val <= min_val:
return False
if max_val and node.val >= max_val:
return False
return is_bst(node.left, min_val, node.val) and is_bst(node.right, node.val, max_val)
medium
A. Using 'if min_val' causes incorrect checks when min_val is 0 or negative.
B. The function does not check if node is None.
C. The function should return False when node is None.
D. The recursive calls have wrong parameter order.
Solution
Step 1: Analyze condition checks for min_val and max_val
Using 'if min_val' fails when min_val is 0 or negative because 0 is False in Python.
Step 2: Identify correct way to check None
We should check 'if min_val is not None' to correctly handle 0 or negative values.
Final Answer:
Using 'if min_val' causes incorrect checks when min_val is 0 or negative. -> Option A
Quick Check:
Check None explicitly, not truthiness [OK]
Hint: Use 'is not None' to check min_val and max_val [OK]
Common Mistakes:
Using truthy checks for numeric bounds
Ignoring zero or negative values in conditions
Misordering recursive parameters
5. Given a binary tree where nodes can have duplicate values, which modification to the BST validation logic allows duplicates only on the right subtree?
def is_bst_with_duplicates(node, min_val=float('-inf'), max_val=float('inf')):
if not node:
return True
# Fill condition here
return (is_bst_with_duplicates(node.left, min_val, node.val) and
is_bst_with_duplicates(node.right, node.val, max_val))
hard
A. Change condition to: if not (min_val <= node.val < max_val): return False
B. Change condition to: if not (min_val <= node.val <= max_val): return False
C. Change condition to: if not (min_val < node.val < max_val): return False
D. Change condition to: if not (min_val < node.val <= max_val): return False
Solution
Step 1: Understand duplicate placement rule
Duplicates allowed only on right means left subtree values must be strictly less than node.val, right subtree values can be equal or greater.
Step 2: Adjust inequality conditions accordingly
Left subtree uses min_val <= node.val < max_val, so node.val can be equal to min_val but less than max_val. For right subtree, node.val can be equal to min_val.
Final Answer:
Change condition to: if not (min_val <= node.val < max_val): return False -> Option A
Quick Check:
Duplicates on right: allow equality on right side [OK]
Hint: Allow equality only on right subtree values [OK]
Common Mistakes:
Allowing duplicates on left subtree
Using strict inequalities on both sides
Not adjusting min_val and max_val checks
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.