What if you could find the biggest thing in a huge list by just following one simple path?
Why BST Find Maximum Element in DSA C#?
Imagine you have a messy pile of books with different heights, and you want to find the tallest book. You start picking up each book one by one, comparing their heights manually.
This manual way is slow and tiring because you have to check every single book. You might lose track or make mistakes, especially if the pile is very big.
A Binary Search Tree (BST) organizes books so that the tallest book is always on the far right. To find the tallest book, you just keep moving right until you can't go further. This is quick and simple.
int max = int.MinValue; foreach (int height in books) { if (height > max) max = height; }
Node current = root;
while (current.Right != null) {
current = current.Right;
}
int max = current.Value;This lets you find the largest value quickly without checking every item, saving time and effort.
In a phone contact list sorted by names, finding the last contact alphabetically is like finding the maximum element in a BST.
Manual search checks every item, which is slow.
BST stores data so the maximum is always at the rightmost node.
Finding maximum means moving right until no more right child exists.
Practice
Solution
Step 1: Understand BST property
In a BST, left child nodes have smaller values and right child nodes have larger values compared to their parent.Step 2: Locate maximum element
The maximum element is the largest value, so it must be the rightmost node because values increase to the right.Final Answer:
At the rightmost node -> Option BQuick Check:
Maximum element = rightmost node [OK]
- Thinking maximum is at the root
- Confusing leftmost with maximum
- Assuming maximum can be any leaf
root?Solution
Step 1: Check traversal direction
To find max, traverse right child nodes until no more right child exists.Step 2: Verify code correctness
while (root.Right != null) { root = root.Right; } return root.Value; uses a while loop to move right untilroot.Rightis null, then returnsroot.Value, which is correct.Final Answer:
while (root.Right != null) { root = root.Right; } return root.Value; -> Option CQuick Check:
Traverse right until null, then return value [OK]
- Traversing left child instead of right
- Returning root value without traversal
- Using incorrect condition in loop
class Node {
public int Value;
public Node Left, Right;
public Node(int val) { Value = val; Left = Right = null; }
}
Node root = new Node(10);
root.Left = new Node(5);
root.Right = new Node(15);
root.Right.Right = new Node(20);
Node current = root;
while (current.Right != null) {
current = current.Right;
}
Console.WriteLine(current.Value);Solution
Step 1: Trace the BST structure
Root is 10, right child 15, right child of 15 is 20. So rightmost node is 20.Step 2: Follow the loop
The loop moves current from 10 to 15, then to 20, then stops because 20.Right is null.Final Answer:
20 -> Option DQuick Check:
Rightmost node value = 20 [OK]
- Stopping at 15 instead of 20
- Printing root value instead of max
- Confusing left and right children
int FindMax(Node root) {
if (root == null) return int.MinValue;
if (root.Right == null) return root.Value;
return FindMax(root.Left);
}Solution
Step 1: Analyze recursion direction
To find max, recursion must go right, but code recurses left incorrectly.Step 2: Identify correct recursion
ChangeFindMax(root.Left)toFindMax(root.Right)to find max correctly.Final Answer:
It should recurse on root.Right, not root.Left -> Option AQuick Check:
Max found by right recursion [OK]
- Recursing left child instead of right
- Returning wrong base case value
- Ignoring null root check
int FindMaxWithDuplicates(Node root) {
if (root == null) return int.MinValue;
int rightMax = FindMaxWithDuplicates(root.Right);
return Math.Max(root.Value, rightMax);
}
What is the output of FindMaxWithDuplicates on this BST?
Root: 10
Left: 5
Right: 10
Right.Right: 15
Right.Right.Right: 15Solution
Step 1: Understand duplicate handling
The method compares current node value with max from right subtree, so duplicates do not affect max finding.Step 2: Trace values
Right subtree max is 15 (rightmost node). Root value 10 is less than 15, so max is 15.Final Answer:
15 -> Option AQuick Check:
Max value with duplicates = 15 [OK]
- Assuming duplicates cause errors
- Returning first max found without comparison
- Ignoring right subtree values
Ready to prove it?
Pass the test and this pattern moves unknown
