Bird
Raised Fist0
DSA Javascriptprogramming~5 mins

BST Find Minimum Element in DSA Javascript - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: BST Find Minimum Element
O(h)
Understanding Time Complexity

We want to know how long it takes to find the smallest value in a Binary Search Tree (BST).

How does the time grow as the tree gets bigger?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


function findMin(root) {
  let current = root;
  while (current.left !== null) {
    current = current.left;
  }
  return current.value;
}
    

This code finds the smallest value by going left until no more left child exists.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Moving down the left child nodes in the tree.
  • How many times: At most once per level of the tree, until the leftmost node is reached.
How Execution Grows With Input

As the tree grows taller, the number of steps to find the minimum grows roughly with the height of the tree.

Input Size (n)Approx. Operations (steps down left)
10Up to 4 (if tree height is 4)
100Up to 7 (if tree height is 7)
1000Up to 10 (if tree height is 10)

Pattern observation: The steps grow with the tree height, which depends on how balanced the tree is.

Final Time Complexity

Time Complexity: O(h)

This means the time depends on the height of the tree, going down one level at a time.

Common Mistake

[X] Wrong: "Finding the minimum always takes O(1) time because it's just one step."

[OK] Correct: The minimum is found by moving down the left side, which can take many steps if the tree is tall.

Interview Connect

Understanding how tree height affects search time helps you explain why balanced trees are faster and shows your grasp of data structure efficiency.

Self-Check

"What if the BST is perfectly balanced? How would the time complexity change?"

Practice

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

Solution

  1. Step 1: Understand BST property

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

    The smallest value is found by going as far left as possible.
  3. Final Answer:

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

    Minimum = leftmost node [OK]
Hint: Minimum is always the leftmost 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 JavaScript code snippets correctly finds the minimum element in a BST node structure where each node has left and value properties?
easy
A. function findMin(node) { while(node.left) { node = node.left; } return node.value; }
B. function findMin(node) { while(node.right) { node = node.right; } return node.value; }
C. function findMin(node) { return node.value; }
D. function findMin(node) { if(node.right) return findMin(node.right); else return node.value; }

Solution

  1. Step 1: Check traversal direction

    Minimum is found by moving left, so loop should check node.left.
  2. Step 2: Verify code correctness

    function findMin(node) { while(node.left) { node = node.left; } return node.value; } loops while node.left exists, then returns node.value, which is correct.
  3. Final Answer:

    function findMin(node) { while(node.left) { node = node.left; } return node.value; } -> Option A
  4. Quick Check:

    Traverse left until no left child [OK]
Hint: Loop left child nodes to find minimum [OK]
Common Mistakes:
  • Looping right child instead of left
  • Returning node.value without traversal
  • Recursing on right child for minimum
3. Given the BST below and the function findMin that finds the minimum value, what will be the output?
const root = {
  value: 10,
  left: { value: 5, left: { value: 2, left: null, right: null }, right: null },
  right: { value: 15, left: null, right: null }
};

function findMin(node) {
  while(node.left) {
    node = node.left;
  }
  return node.value;
}

console.log(findMin(root));
medium
A. 15
B. 5
C. 10
D. 2

Solution

  1. Step 1: Trace left children from root

    Start at 10, move left to 5, then left to 2, which has no left child.
  2. Step 2: Return value of leftmost node

    Leftmost node is 2, so function returns 2.
  3. Final Answer:

    2 -> Option D
  4. Quick Check:

    Leftmost node value = 2 [OK]
Hint: Minimum is leftmost node value 2 here [OK]
Common Mistakes:
  • Returning root value instead of leftmost
  • Confusing left and right child traversal
  • Misreading tree structure
4. The following code is intended to find the minimum value in a BST but has a bug. What is the bug?
function findMin(node) {
  while(node.right) {
    node = node.right;
  }
  return node.value;
}
medium
A. It incorrectly traverses right child instead of left
B. It does not return the node value
C. It causes infinite loop
D. It throws syntax error

Solution

  1. Step 1: Analyze traversal direction

    The code moves to node.right repeatedly, which finds the maximum, not minimum.
  2. Step 2: Identify correct traversal for minimum

    Minimum requires moving to node.left, so the bug is wrong direction.
  3. Final Answer:

    It incorrectly traverses right child instead of left -> Option A
  4. Quick Check:

    Minimum = leftmost, not rightmost [OK]
Hint: Minimum is leftmost, not rightmost traversal [OK]
Common Mistakes:
  • Confusing left and right child traversal
  • Assuming right child leads to minimum
  • Not testing code with example trees
5. You want to find the minimum element in a BST that may be empty (null). Which of the following improved functions correctly handles this edge case and returns null if the tree is empty?
hard
A. function findMin(node) { while(node.left) { node = node.left; } return node.value; }
B. function findMin(node) { if(!node) return null; while(node.left) { node = node.left; } return node.value; }
C. function findMin(node) { if(node.left) return findMin(node.left); else return node.value; }
D. function findMin(node) { if(!node.left) return null; else return findMin(node.left); }

Solution

  1. Step 1: Check for empty tree

    function findMin(node) { if(!node) return null; while(node.left) { node = node.left; } return node.value; } returns null immediately if node is null, handling empty tree.
  2. Step 2: Traverse left children safely

    Then it loops left until no left child, returning minimum value correctly.
  3. Final Answer:

    function findMin(node) { if(!node) return null; while(node.left) { node = node.left; } return node.value; } -> Option B
  4. Quick Check:

    Check null first, then traverse left [OK]
Hint: Check for null before traversal to avoid errors [OK]
Common Mistakes:
  • Not checking for null input
  • Returning null incorrectly when node exists
  • Recursing without base case for null
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