A Binary Search Tree is a tree data structure where each node has at most two children. For every node, all nodes in its left subtree have smaller values, and all nodes in its right subtree have larger values.
Click to reveal answer
beginner
How do you find the maximum element in a BST?
To find the maximum element in a BST, start at the root and keep moving to the right child until you reach a node with no right child. That node contains the maximum value.
Click to reveal answer
beginner
Why does moving right in a BST lead to the maximum element?
Because in a BST, all values in the right subtree are greater than the current node. So, moving right keeps going to larger values until no more right child exists, which is the maximum.
Click to reveal answer
intermediate
What is the time complexity of finding the maximum element in a BST?
The time complexity is O(h), where h is the height of the BST. In the worst case (skewed tree), it can be O(n), and in a balanced BST, it is O(log n).
Click to reveal answer
beginner
Show the C++ code snippet to find the maximum element in a BST.
The maximum element is always the rightmost node in a BST because all right children have larger values.
What should you do if the BST is empty when finding the maximum element?
AReturn root
BReturn null or nullptr
CReturn minimum element
DThrow an error
✗ Incorrect
If the BST is empty (root is null), there is no maximum element, so return null or nullptr.
What is the time complexity to find the maximum element in a balanced BST with n nodes?
AO(1)
BO(n)
CO(log n)
DO(n log n)
✗ Incorrect
In a balanced BST, the height is about log n, so finding the maximum element takes O(log n) time.
Which pointer do you follow to find the maximum element in a BST?
ARight child pointer
BParent pointer
CLeft child pointer
DRandom pointer
✗ Incorrect
You follow the right child pointer repeatedly to reach the maximum element.
If a BST has only one node, what is the maximum element?
ARight child
BNo maximum element
CLeft child
DThe root node itself
✗ Incorrect
If there is only one node, that node is both the minimum and maximum element.
Explain step-by-step how to find the maximum element in a BST.
Think about the BST property and the direction to move.
You got /4 concepts.
Write a simple C++ function to find the maximum element in a BST and explain its logic.
Use a while loop to traverse right children.
You got /4 concepts.
Practice
(1/5)
1. In a Binary Search Tree (BST), where is the maximum element always located?
easy
A. At the leftmost node
B. At any leaf node
C. At the root node
D. At the rightmost node
Solution
Step 1: Understand BST property
In a BST, left child nodes have smaller values and right child nodes have larger values than their parent.
Step 2: Locate maximum element
The maximum element is the rightmost node because it has no right child and is greater than all other nodes.
Final Answer:
At the rightmost node -> Option D
Quick Check:
Maximum = rightmost node [OK]
Hint: Maximum is always the rightmost node in BST [OK]
Common Mistakes:
Confusing maximum with root node
Thinking maximum is at leftmost node
Assuming maximum can be any leaf
2. Which of the following C++ function signatures correctly finds the maximum element in a BST node pointer root?
easy
A. int findMax(Node* root) { return root->data; }
B. int findMax(Node* root) { while(root->left) root = root->left; return root->data; }
C. int findMax(Node* root) { while(root->right) root = root->right; return root->data; }
D. int findMax(Node* root) { while(root->parent) root = root->parent; return root->data; }
Solution
Step 1: Check traversal direction for maximum
Maximum is found by moving right until no right child exists.
Step 2: Verify code correctness
int findMax(Node* root) { while(root->right) root = root->right; return root->data; } correctly loops while root->right exists and returns root->data.
Final Answer:
int findMax(Node* root) { while(root->right) root = root->right; return root->data; } -> Option C
Quick Check:
Traverse right child to find max [OK]
Hint: Traverse right child pointer until null [OK]
Common Mistakes:
Traversing left child instead of right
Returning root data without traversal
Using parent pointer which may not exist
3. What will be the output of the following C++ code snippet?
struct Node {
int data;
Node* left;
Node* right;
};
Node* root = new Node{10, nullptr, nullptr};
root->right = new Node{20, nullptr, nullptr};
root->right->right = new Node{30, nullptr, nullptr};
int findMax(Node* root) {
while(root->right) root = root->right;
return root->data;
}
std::cout << findMax(root) << std::endl;
medium
A. 30
B. 20
C. 10
D. Runtime error
Solution
Step 1: Trace the BST structure
Root is 10, right child 20, right child's right child 30.
Step 2: Follow findMax function
Loop moves from 10 to 20, then 20 to 30, then stops as 30 has no right child.
Final Answer:
30 -> Option A
Quick Check:
Rightmost node data = 30 [OK]
Hint: Rightmost node data is maximum [OK]
Common Mistakes:
Returning root data without traversal
Confusing left and right pointers
Assuming runtime error due to nullptr
4. Identify the bug in the following C++ function to find the maximum element in a BST:
int findMax(Node* root) {
if (root == nullptr) return -1;
while(root->left) {
root = root->left;
}
return root->data;
}
medium
A. Should traverse right child, not left child
B. Should return 0 instead of -1 for nullptr
C. Missing check for root->right in while loop
D. Function should be void, not int
Solution
Step 1: Analyze traversal direction
The function incorrectly traverses left child to find maximum, but maximum is at rightmost node.
Step 2: Correct traversal logic
Change while(root->left) to while(root->right) to find maximum correctly.
Final Answer:
Should traverse right child, not left child -> Option A
Quick Check:
Maximum = rightmost node, not leftmost [OK]
Hint: Maximum is rightmost, so traverse right pointer [OK]
Common Mistakes:
Traversing left child instead of right
Ignoring nullptr check
Returning wrong default value
5. Given a BST where some nodes have duplicate values, which approach correctly finds the maximum element considering duplicates are allowed on the right subtree?
struct Node {
int data;
Node* left;
Node* right;
};
// Function to find max element
int findMax(Node* root) {
// Your code here
}
hard
A. Traverse right while root->right exists and root->right->data > root->data
B. Traverse right while root->right exists only
C. Traverse left while root->left exists and root->left->data > root->data
D. Return root->data without traversal
Solution
Step 1: Understand duplicates in BST
Even with duplicates allowed on the right subtree, BST property ensures right subtree values are >= parent, so maximum is always the rightmost node.
Step 2: Correct traversal for maximum
Traverse right while root->right exists only. No data comparison needed due to BST invariants.
Final Answer:
Traverse right while root->right exists only -> Option B
Quick Check:
Traverse right child pointer until null [OK]
Hint: Traverse right child pointer until null [OK]
Common Mistakes:
Using strict > check which stops early on duplicates
Traversing left instead of right
Returning root data without traversal
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.