What if you could find the smallest item instantly without checking everything?
Why BST Find Minimum Element in DSA Typescript?
Imagine you have a messy stack of books with no order, and you want to find the oldest book quickly.
You start flipping through each book one by one to find the oldest date.
Checking every book manually takes a lot of time and effort.
It's easy to miss the oldest book or get tired and make mistakes.
This slow process wastes your time and energy.
A Binary Search Tree (BST) organizes books so the oldest is always on the left side.
To find the oldest book, you just keep going left until you can't go further.
This way, you find the minimum quickly without checking every book.
function findOldestBook(books: number[]): number {
let min = books[0];
for (let i = 1; i < books.length; i++) {
if (books[i] < min) min = books[i];
}
return min;
}function findMinNode(root: TreeNode | null): TreeNode | null {
let current = root;
while (current && current.left !== null) {
current = current.left;
}
return current;
}This lets you find the smallest value in a sorted structure instantly, saving time and effort.
In a phone contact list sorted by name, finding the first contact alphabetically is like finding the minimum in a BST.
Manual search is slow and error-prone.
BST keeps data ordered to find minimum quickly.
Just follow left children to find the smallest value.
Practice
Solution
Step 1: Understand BST property
In a BST, left child nodes have smaller values than their parents.Step 2: Locate minimum element
The smallest value is found by going left until no more left child exists.Final Answer:
At the leftmost node -> Option DQuick Check:
Minimum element = leftmost node [OK]
- Confusing minimum with root node
- Thinking minimum is at rightmost node
- Assuming minimum can be any leaf
Solution
Step 1: Check traversal direction for minimum
Minimum is found by moving left until no left child exists.Step 2: Verify code correctness
while (node.left !== null) { node = node.left; } return node.value; correctly loops left and returns node value; others are incorrect or incomplete.Final Answer:
while (node.left !== null) { node = node.left; } return node.value; -> Option BQuick Check:
Traverse left to find minimum [OK]
- Traversing right child instead of left
- Using Math.min without checking null nodes
- Not looping until leftmost node
class Node {
constructor(public value: number, public left: Node | null = null, public right: Node | null = null) {}
}
const root = new Node(10, new Node(5, new Node(2), new Node(7)), new Node(15));
function findMin(node: Node): number {
while (node.left !== null) {
node = node.left;
}
return node.value;
}
console.log(findMin(root));Solution
Step 1: Analyze BST structure
Root is 10, left child 5, left-left child 2, left-right child 7, right child 15.Step 2: Trace findMin function
Function moves left from 10 to 5, then to 2, which has no left child, so returns 2.Final Answer:
2 -> Option CQuick Check:
Minimum value in BST = 2 [OK]
- Returning root value instead of leftmost
- Confusing left and right child nodes
- Stopping traversal too early
function findMin(node: Node | null): number {
if (node === null) return -1;
while (node.right !== null) {
node = node.right;
}
return node.value;
}Solution
Step 1: Check traversal direction
Minimum element requires moving left, but code moves right.Step 2: Identify correct fix
Change 'node.right' to 'node.left' in the while loop to find minimum.Final Answer:
Traverses right child instead of left child -> Option AQuick Check:
Minimum found by left traversal, not right [OK]
- Using right child traversal for minimum
- Ignoring null checks before access
- Returning default -1 instead of handling empty tree
findMin function to return the smallest unique value?Solution
Step 1: Understand duplicates in BST
Duplicates can appear on left or right; leftmost node may not be unique minimum.Step 2: Modify approach to find unique minimum
Traverse entire tree to collect all values, then find the smallest unique value.Final Answer:
Traverse entire tree and collect all values, then find minimum -> Option AQuick Check:
Full traversal needed for unique minimum [OK]
- Assuming leftmost node is always unique minimum
- Ignoring duplicates in traversal
- Using rightmost node as minimum
Ready to prove it?
Pass the test and this pattern moves unknown
