Bird
Raised Fist0
DSA Goprogramming~5 mins

Floor and Ceil in BST in DSA Go - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
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
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)
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
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
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
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

      1. 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.
      2. 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.
      3. Final Answer:

        The greatest value in the BST less than or equal to the given value -> Option D
      4. 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

      1. 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.
      2. 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.
      3. Final Answer:

        func ceil(root *Node, key int) int -> Option A
      4. 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

      1. 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.
      2. Step 2: Confirm returned ceil value

        Ceil is 15, the smallest value ≥ 14 in BST.
      3. Final Answer:

        15 -> Option A
      4. 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

      1. Step 1: Analyze floorVal condition

        The code checks if floorVal <= key, but floorVal can be -1 (no floor found). This causes wrong returns.
      2. 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.
      3. Final Answer:

        The condition 'floorVal <= key' should be 'floorVal != -1' -> Option B
      4. 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

      1. 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.
      2. 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.
      3. Final Answer:

        Traverse once, update floor when node.val ≤ key, update ceil when node.val ≥ key -> Option C
      4. 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 unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard