Bird
Raised Fist0
DSA C++programming~5 mins

BST Find Maximum 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 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.
Node* findMax(Node* root) { if (root == nullptr) return nullptr; while (root->right != nullptr) { root = root->right; } return root; }
Click to reveal answer
In a BST, where is the maximum element located?
ARightmost node
BLeftmost node
CRoot node
DAny leaf node
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
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)
Which pointer do you follow to find the maximum element in a BST?
ARight child pointer
BParent pointer
CLeft child pointer
DRandom pointer
If a BST has only one node, what is the maximum element?
ARight child
BNo maximum element
CLeft child
DThe root node itself
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

      1. Step 1: Understand BST property

        In a BST, left child nodes have smaller values and right child nodes have larger values than their parent.
      2. 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.
      3. Final Answer:

        At the rightmost node -> Option D
      4. 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

      1. Step 1: Check traversal direction for maximum

        Maximum is found by moving right until no right child exists.
      2. 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.
      3. Final Answer:

        int findMax(Node* root) { while(root->right) root = root->right; return root->data; } -> Option C
      4. 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

      1. Step 1: Trace the BST structure

        Root is 10, right child 20, right child's right child 30.
      2. Step 2: Follow findMax function

        Loop moves from 10 to 20, then 20 to 30, then stops as 30 has no right child.
      3. Final Answer:

        30 -> Option A
      4. 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

      1. Step 1: Analyze traversal direction

        The function incorrectly traverses left child to find maximum, but maximum is at rightmost node.
      2. Step 2: Correct traversal logic

        Change while(root->left) to while(root->right) to find maximum correctly.
      3. Final Answer:

        Should traverse right child, not left child -> Option A
      4. 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

      1. 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.
      2. Step 2: Correct traversal for maximum

        Traverse right while root->right exists only. No data comparison needed due to BST invariants.
      3. Final Answer:

        Traverse right while root->right exists only -> Option B
      4. 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 unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard