Bird
Raised Fist0
DSA Cprogramming~20 mins

Floor and Ceil in BST in DSA C - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Floor and Ceil Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Floor and Ceil for a given key in BST
What is the output of the floor and ceil values for key = 15 in the given BST?
DSA C
struct Node {
    int data;
    struct Node* left;
    struct Node* right;
};

// BST structure:
//        20
//       /  \
//     10    30
//    /  \     \
//   5   15    40

int floorBST(struct Node* root, int key) {
    int floor = -1;
    while (root) {
        if (root->data == key) return root->data;
        if (root->data > key) root = root->left;
        else {
            floor = root->data;
            root = root->right;
        }
    }
    return floor;
}

int ceilBST(struct Node* root, int key) {
    int ceil = -1;
    while (root) {
        if (root->data == key) return root->data;
        if (root->data < key) root = root->right;
        else {
            ceil = root->data;
            root = root->left;
        }
    }
    return ceil;
}

// For key = 15, find floor and ceil
A{"floor": 15, "ceil": 20}
B{"floor": 15, "ceil": 15}
C{"floor": 10, "ceil": 20}
D{"floor": 10, "ceil": 15}
Attempts:
2 left
💡 Hint
Floor is the greatest value less than or equal to the key; ceil is the smallest value greater than or equal to the key.
❓ Predict Output
intermediate
2:00remaining
Floor and Ceil values for a key not present in BST
What are the floor and ceil values for key = 17 in the BST shown below? // BST structure: // 20 // / \ // 10 30 // / \ \ // 5 15 40
DSA C
int floorBST(struct Node* root, int key);
int ceilBST(struct Node* root, int key);

// key = 17
A{"floor": 15, "ceil": 30}
B{"floor": 10, "ceil": 15}
C{"floor": 15, "ceil": 20}
D{"floor": 20, "ceil": 30}
Attempts:
2 left
💡 Hint
Floor is the largest value less than or equal to 17; ceil is the smallest value greater than or equal to 17.
🔧 Debug
advanced
2:00remaining
Identify the error in floorBST function
What error will occur when running this floorBST function on a BST?
DSA C
int floorBST(struct Node* root, int key) {
    int floor = -1;
    while (root != NULL) {
        if (root->data == key) return root->data;
        else if (root->data < key) {
            floor = root->data;
            root = root->right;
        } else {
            root = root->left;
        }
    }
    return floor;
}
ACauses segmentation fault due to null pointer dereference
BReturns correct floor value
CCauses infinite loop due to wrong pointer updates
DReturns incorrect floor value because it goes left when it should go right for root->data < key
Attempts:
2 left
💡 Hint
Check the direction of traversal when root->data is less than key.
🚀 Application
advanced
2:00remaining
Using Floor and Ceil to find closest value in BST
Given a BST and a key, which approach correctly finds the closest value to the key using floor and ceil?
AFind floor and ceil, then return the one with minimum absolute difference to key
BReturn floor value always, ignoring ceil
CReturn ceil value always, ignoring floor
DReturn average of floor and ceil values
Attempts:
2 left
💡 Hint
Closest value means smallest distance to key, so compare both floor and ceil.
🧠 Conceptual
expert
3:00remaining
Floor and Ceil in BST with duplicates
In a BST that allows duplicate values (duplicates inserted to the right subtree), what is the floor and ceil of key = 15 if the BST contains nodes with values: 10, 15, 15, 20?
AFloor = 15, Ceil = 15
BFloor = 10, Ceil = 15
CFloor = 15, Ceil = 20
DFloor = 10, Ceil = 20
Attempts:
2 left
💡 Hint
Duplicates are on the right subtree, so floor and ceil for 15 should be 15.

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 greater than or equal to the given value
B. The root value of the BST
C. The greatest value in the BST less than or equal to the given value
D. The smallest value in the BST less than the given value

Solution

  1. Step 1: Understand the definition of floor in BST

    The floor of a value is the greatest 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 C
  4. Quick Check:

    Floor = greatest ≤ value [OK]
Hint: Floor is largest value ≤ target in BST [OK]
Common Mistakes:
  • Confusing floor with ceil
  • Thinking floor is the smallest value
  • Assuming floor is always the root
2. Which of the following is the correct C function signature to find the ceil of a value in a BST node structure named Node?
easy
A. int ceilBST(Node* root, int key);
B. void ceilBST(Node root, int key);
C. Node* ceilBST(int key, Node* root);
D. int ceilBST(int key);

Solution

  1. Step 1: Analyze function parameters and return type

    The function should take a pointer to the root node and the key to find ceil for, returning an integer value.
  2. Step 2: Match with options

    int ceilBST(Node* root, int key); matches this: it takes Node* root and int key, returns int. Others have wrong parameter order, types, or return type.
  3. Final Answer:

    int ceilBST(Node* root, int key); -> Option A
  4. Quick Check:

    Correct signature: pointer root, key, returns int [OK]
Hint: Function takes root pointer and key, returns int [OK]
Common Mistakes:
  • Passing root by value instead of pointer
  • Wrong parameter order
  • Returning Node* instead of int
3. Given the BST below and the key = 14, what is the output of the ceil function?

        10
       /  \
      5    15
          /  \
         12   20
medium
A. -1
B. 15
C. 12
D. 20

Solution

  1. Step 1: Understand ceil definition and traverse BST

    Ceil is smallest value ≥ key. Starting at root 10, since 14 > 10, move right to 15. 15 ≥ 14, so candidate ceil is 15. Check left subtree of 15 (12) which is < 14, so ignore.
  2. Step 2: Confirm smallest candidate

    15 is the smallest node ≥ 14. 20 is larger but not smaller than 15, so 15 is ceil.
  3. Final Answer:

    15 -> Option B
  4. Quick Check:

    Ceil(14) = 15 [OK]
Hint: Ceil is smallest node ≥ key, check right subtree carefully [OK]
Common Mistakes:
  • Choosing 20 instead of 15
  • Choosing 12 which is < 14
  • Returning -1 when ceil exists
4. Consider the following buggy C code snippet to find floor in BST. What is the main error?

int floorBST(Node* root, int key) {
    if (!root) return -1;
    if (root->data == key) return root->data;
    if (root->data > key) return floorBST(root->left, key);
    int floorValue = floorBST(root->right, key);
    if (floorValue <= key && floorValue != -1) return floorValue;
    else return root->data;
}
medium
A. It returns root->data even if floorValue is -1
B. It does not check for NULL root
C. It returns -1 when key is found
D. It incorrectly searches left subtree when root->data < key

Solution

  1. Step 1: Analyze return conditions

    If floorValue is -1 (meaning no floor found in right subtree), the code returns root->data without checking if root->data ≤ key, which can be incorrect.
  2. Step 2: Identify the error

    The code should check if root->data ≤ key before returning it; otherwise, it may return a value greater than key, violating floor definition.
  3. Final Answer:

    It returns root->data even if floorValue is -1 -> Option A
  4. Quick Check:

    Missing check before returning root->data causes wrong floor [OK]
Hint: Check root->data ≤ key before returning it [OK]
Common Mistakes:
  • Ignoring floorValue == -1 case
  • Returning wrong subtree
  • Not handling NULL root
5. You have a BST with nodes: 8, 4, 12, 2, 6, 10, 14. You want to find the floor and ceil of 5. Which pair is correct?
hard
A. Floor = 5, Ceil = 5
B. Floor = 6, Ceil = 4
C. Floor = 2, Ceil = 8
D. Floor = 4, Ceil = 6

Solution

  1. Step 1: Identify floor of 5 in BST

    Floor is greatest value ≤ 5. Nodes ≤ 5 are 2 and 4. Greatest is 4.
  2. Step 2: Identify ceil of 5 in BST

    Ceil is smallest value ≥ 5. Nodes ≥ 5 are 6, 8, 10, 12, 14. Smallest is 6.
  3. Final Answer:

    Floor = 4, Ceil = 6 -> Option D
  4. Quick Check:

    Floor(5)=4, Ceil(5)=6 [OK]
Hint: Floor ≤ key, ceil ≥ key; pick closest values [OK]
Common Mistakes:
  • Swapping floor and ceil values
  • Assuming floor or ceil equals key if not present
  • Choosing wrong closest values
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