Bird
Raised Fist0
DSA Cprogramming~5 mins

BST Find Minimum Element in DSA C - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Binary Search Tree (BST)?
A BST is a tree where each node has at most two children. The left child's value is less than the parent's value, and the right child's value is greater than the parent's value.
Click to reveal answer
beginner
How do you find the minimum element in a BST?
Start at the root and keep moving to the left child until you reach a node with no left child. That node contains the minimum value.
Click to reveal answer
beginner
Why does moving left in a BST lead to the minimum element?
Because in a BST, left children always have smaller values than their parents, so the leftmost node is the smallest.
Click to reveal answer
intermediate
What is the time complexity of finding the minimum element in a BST?
The time complexity is O(h), where h is the height of the tree. In the best case (balanced tree), it's O(log n), and in the worst case (skewed tree), it's O(n).
Click to reveal answer
intermediate
Show the C code snippet to find the minimum element in a BST.
struct Node* findMin(struct Node* root) { if (root == NULL) return NULL; while (root->left != NULL) { root = root->left; } return root; }
Click to reveal answer
In a BST, where is the minimum element located?
ALeftmost node
BRightmost node
CRoot node
DAny leaf node
What should you do if the BST is empty when finding the minimum element?
AReturn the rightmost node
BReturn the root node
CReturn NULL or indicate no element
DInsert a new node
What is the time complexity to find the minimum element in a balanced BST with n nodes?
AO(n log n)
BO(n)
CO(1)
DO(log n)
Which pointer do you follow to find the minimum element in a BST?
ALeft child pointer
BRandom pointer
CParent pointer
DRight child pointer
What happens if you call findMin on a BST node that has no left child?
AIt goes to the right child
BIt returns that node as minimum
CIt returns NULL
DIt causes an error
Explain step-by-step how to find the minimum element in a BST.
Think about the BST property and left children.
You got /4 concepts.
    Write a simple C function to find the minimum element in a BST and explain how it works.
    Use a while loop to traverse left children.
    You got /4 concepts.

      Practice

      (1/5)
      1. In a Binary Search Tree (BST), where is the minimum element always located?
      easy
      A. At the leftmost node
      B. At the rightmost node
      C. At the root node
      D. At any leaf node

      Solution

      1. Step 1: Understand BST property

        In a BST, left child nodes have smaller values than their parent nodes.
      2. Step 2: Locate minimum element

        Because smaller values go left, the minimum is at the leftmost node.
      3. Final Answer:

        At the leftmost node -> Option A
      4. Quick Check:

        Minimum element = leftmost node [OK]
      Hint: Minimum is always the farthest left node in BST [OK]
      Common Mistakes:
      • Thinking minimum is at root
      • Confusing leftmost with rightmost
      • Assuming minimum can be any leaf
      2. Which of the following C code snippets correctly finds the minimum element in a BST?
      easy
      A. while(root->left != NULL) root = root->right; return root->data;
      B. while(root->left != NULL) root = root->left; return root->data;
      C. if(root == NULL) return INT_MAX; return root->data;
      D. while(root->right != NULL) root = root->right; return root->data;

      Solution

      1. Step 1: Check loop condition for minimum

        Minimum is found by moving left while left child exists.
      2. Step 2: Verify code correctness

        while(root->left != NULL) root = root->left; return root->data; moves left until no left child, then returns data correctly.
      3. Final Answer:

        while(root->left != NULL) root = root->left; return root->data; -> Option B
      4. Quick Check:

        Traverse left to find minimum [OK]
      Hint: Traverse left child until NULL to find minimum [OK]
      Common Mistakes:
      • Traversing right child instead of left
      • Returning root data without traversal
      • Incorrect loop condition
      3. What will be the output of the following C code snippet for a BST?
      struct Node {
        int data;
        struct Node* left;
        struct Node* right;
      };
      
      struct Node* findMin(struct Node* root) {
        while(root->left != NULL) {
          root = root->left;
        }
        return root;
      }
      
      // Assume BST is:
      //       10
      //      /  \
      //     5    15
      //    / 
      //   2
      
      int main() {
        struct Node n2 = {2, NULL, NULL};
        struct Node n5 = {5, &n2, NULL};
        struct Node n15 = {15, NULL, NULL};
        struct Node n10 = {10, &n5, &n15};
        struct Node* minNode = findMin(&n10);
        printf("%d", minNode->data);
        return 0;
      }
      medium
      A. 10
      B. 5
      C. 2
      D. 15

      Solution

      1. Step 1: Trace findMin function

        Function moves left from root 10 to 5, then to 2, stops as 2 has no left child.
      2. Step 2: Identify returned node data

        Returned node is 2, so printf prints 2.
      3. Final Answer:

        2 -> Option C
      4. Quick Check:

        Leftmost node data = 2 [OK]
      Hint: Output is leftmost node's data in BST [OK]
      Common Mistakes:
      • Confusing leftmost with root
      • Assuming right child is minimum
      • Not following pointer traversal
      4. Identify the error in the following C function that tries to find the minimum element in a BST:
      struct Node* findMin(struct Node* root) {
        while(root->left == NULL) {
          root = root->left;
        }
        return root;
      }
      medium
      A. Loop condition should be root->left != NULL
      B. Function should return root->right
      C. Missing check for root == NULL before loop
      D. Should use recursion instead of loop

      Solution

      1. Step 1: Analyze loop condition

        Loop runs while root->left == NULL, which means it stops if left child exists, so it never moves left.
      2. Step 2: Correct loop condition

        It should run while root->left != NULL to move left until no left child.
      3. Final Answer:

        Loop condition should be root->left != NULL -> Option A
      4. Quick Check:

        Traverse left while left child exists [OK]
      Hint: Loop must continue while left child exists [OK]
      Common Mistakes:
      • Using == NULL instead of != NULL in loop
      • Ignoring NULL root check
      • Confusing left and right pointers
      5. Given a BST where some nodes have only right children, how would you modify the findMin function to safely find the minimum element without causing a runtime error if the tree is empty?
      hard
      A. Traverse right child instead of left child
      B. Return root->data immediately without traversal
      C. Use recursion without base case
      D. Add a check at start: if(root == NULL) return NULL; then traverse left

      Solution

      1. Step 1: Handle empty tree case

        Check if root is NULL at start to avoid dereferencing NULL pointer.
      2. Step 2: Traverse left children safely

        If root is not NULL, move left while left child exists to find minimum.
      3. Final Answer:

        Add a check at start: if(root == NULL) return NULL; then traverse left -> Option D
      4. Quick Check:

        Check NULL root before traversal [OK]
      Hint: Always check for NULL root before traversal [OK]
      Common Mistakes:
      • Not checking for empty tree causing crash
      • Traversing right child for minimum
      • Missing base case in recursion
      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