What is the floor of a value in a Binary Search Tree (BST)?
The floor of a value in a BST is the greatest value in the BST that is less than or equal to the given value.
Click to reveal answer
beginner
What is the ceil of a value in a Binary Search Tree (BST)?
The ceil of a value in a BST is the smallest value in the BST that is greater than or equal to the given value.
Click to reveal answer
intermediate
How does the BST property help in finding floor and ceil efficiently?
Because BST nodes are ordered, we can decide to go left or right at each node to find floor or ceil without checking all nodes, making the search faster.
Click to reveal answer
beginner
In Go, what is the base case when recursively searching for floor or ceil in a BST?
The base case is when the current node is nil, meaning we reached a leaf without finding a better candidate.
Click to reveal answer
beginner
If the target value equals a node's value in BST, what is the floor and ceil?
Both floor and ceil are the node's value itself because it exactly matches the target.
Click to reveal answer
What does the floor of a value in a BST represent?
AThe largest value less than or equal to the target
BThe smallest value greater than or equal to the target
CThe root value of the BST
DThe smallest value in the BST
✗ Incorrect
Floor is the greatest value in the BST that is less than or equal to the target.
If the target value is smaller than all nodes in the BST, what is the floor?
AThe smallest node value
BThe root node value
CThe largest node value
DNo floor exists (nil)
✗ Incorrect
If target is smaller than all nodes, no floor exists because no node is less than or equal to target.
Which direction do you move in BST when searching for floor if current node value is greater than target?
AGo right
BStop search
CGo left
DReturn current node
✗ Incorrect
If current node value is greater than target, floor must be in left subtree.
What is the ceil of a value in a BST?
ASmallest value greater than or equal to target
BLargest value less than or equal to target
CRoot node value
DLargest value in BST
✗ Incorrect
Ceil is the smallest value in BST greater than or equal to the target.
When target equals a node's value, what should floor and ceil functions return?
AReturn nil for both
BReturn the node's value for both
CReturn left child value
DReturn right child value
✗ Incorrect
Exact match means floor and ceil are the node's value.
Explain how to find the floor of a given value in a BST step-by-step.
Think about how BST ordering helps decide direction.
You got /6 concepts.
Describe the difference between floor and ceil in a BST and how their searches differ.
Focus on comparison direction and candidate updates.
You got /5 concepts.
Practice
(1/5)
1. What does the floor of a value in a Binary Search Tree (BST) represent?
easy
A. The smallest value in the BST less than the given value
B. The smallest value in the BST greater than or equal to the given value
C. The root value of the BST
D. The greatest value in the BST less than or equal to the given value
Solution
Step 1: Understand the floor concept in BST
The floor of a value is the largest value in the BST that is less than or equal to the given value.
Step 2: Compare with options
The greatest value in the BST less than or equal to the given value matches this definition exactly, while others describe different concepts.
Final Answer:
The greatest value in the BST less than or equal to the given value -> Option D
Quick Check:
Floor = greatest ≤ value [OK]
Hint: Floor is largest ≤ value in BST [OK]
Common Mistakes:
Confusing floor with ceil
Thinking floor is smallest value
Assuming floor is always root
2. Which of the following Go function signatures correctly represents a function to find the ceil in a BST for an integer key?
easy
A. func ceil(root *Node, key int) int
B. func ceil(key int, root *Node) int
C. func ceil(root Node, key int) int
D. func ceil(root *Node, key string) int
Solution
Step 1: Check parameter order and types
The function should take a pointer to the root node and an integer key to search for ceil.
Step 2: Validate options
func ceil(root *Node, key int) int uses pointer to Node and int key in correct order. Swapping parameters to key first is wrong, using value Node instead of pointer is wrong, using string for key is wrong.
Final Answer:
func ceil(root *Node, key int) int -> Option A
Quick Check:
Pointer root and int key correct [OK]
Hint: Pointer root first, key int second [OK]
Common Mistakes:
Swapping parameter order
Using value instead of pointer for root
Wrong key data type
3. Given the BST below and key = 14, what is the ceil value returned by the following Go code?
type Node struct {
val int
left, right *Node
}
func ceil(root *Node, key int) int {
if root == nil {
return -1
}
if root.val == key {
return root.val
}
if root.val < key {
return ceil(root.right, key)
}
ceilVal := ceil(root.left, key)
if ceilVal >= key && ceilVal != -1 {
return ceilVal
}
return root.val
}
// BST structure:
// 10
// / \
// 5 15
// / \
// 12 20
// Call: ceil(root, 14)
medium
A. 15
B. 12
C. 20
D. -1
Solution
Step 1: Trace ceil function with key=14
Start at root 10: 10 < 14, go right to 15. 15 > 14, check left subtree of 15 (12). 12 < 14, so ceil(12) returns -1, so return 15.
Step 2: Confirm returned ceil value
Ceil is 15, the smallest value ≥ 14 in BST.
Final Answer:
15 -> Option A
Quick Check:
Ceil(14) = 15 [OK]
Hint: Ceil is smallest ≥ key, check right if less [OK]
Common Mistakes:
Returning 12 instead of 15
Returning -1 when ceil exists
Confusing floor and ceil logic
4. The following Go code attempts to find the floor in a BST but returns incorrect results. What is the bug?
func floor(root *Node, key int) int {
if root == nil {
return -1
}
if root.val == key {
return root.val
}
if root.val > key {
return floor(root.left, key)
}
floorVal := floor(root.right, key)
if floorVal <= key {
return floorVal
}
return root.val
}
medium
A. The function should check 'floorVal >= key' instead
B. The condition 'floorVal <= key' should be 'floorVal != -1'
C. The base case should return 0 instead of -1
D. The recursive call on left subtree is incorrect
Solution
Step 1: Analyze floorVal condition
The code checks if floorVal <= key, but floorVal can be -1 (no floor found). This causes wrong returns.
Step 2: Correct condition for valid floorVal
It should check if floorVal != -1 to confirm a valid floor before returning it; otherwise return root.val.
Final Answer:
The condition 'floorVal <= key' should be 'floorVal != -1' -> Option B
Quick Check:
Check floorVal != -1 before return [OK]
Hint: Check for -1 (no floor) before returning floorVal [OK]
Common Mistakes:
Ignoring -1 as invalid floor
Wrong comparison operators
Changing base case return value
5. You have a BST with nodes: 8, 4, 12, 2, 6, 10, 14. You want to find both floor and ceil for key = 5 using a single traversal function. Which approach is best to implement this efficiently?
hard
A. Use inorder traversal and store all nodes in array, then binary search
B. Traverse left subtree for floor, right subtree for ceil separately
C. Traverse once, update floor when node.val ≤ key, update ceil when node.val ≥ key
D. Find floor first, then restart traversal to find ceil
Solution
Step 1: Understand single traversal for floor and ceil
During one traversal, compare node values with key. Update floor if node.val ≤ key and is greater than current floor. Update ceil if node.val ≥ key and is less than current ceil.
Step 2: Compare approaches
Traverse once, update floor when node.val ≤ key, update ceil when node.val ≥ key efficiently finds both in one pass. Options B and C require multiple traversals. Use inorder traversal and store all nodes in array, then binary search uses extra space and is less efficient.
Final Answer:
Traverse once, update floor when node.val ≤ key, update ceil when node.val ≥ key -> Option C
Quick Check:
Single pass update floor & ceil [OK]
Hint: Update floor and ceil in one BST traversal [OK]
Common Mistakes:
Doing separate traversals for floor and ceil
Using extra space unnecessarily
Restarting traversal multiple times
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.