Bird
Raised Fist0
DSA Goprogramming~10 mins

BST Find Maximum Element in DSA Go - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to find the maximum element in a BST by moving to the right child.

DSA Go
func findMax(root *Node) int {
    current := root
    for current.[1] != nil {
        current = current.right
    }
    return current.value
}
Drag options to blanks, or click blank then click option'
Aleft
Bchild
Cparent
Dright
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'left' instead of 'right' to traverse.
Trying to access a non-existent 'parent' field.
2fill in blank
medium

Complete the code to handle the case when the BST is empty before finding the maximum element.

DSA Go
func findMax(root *Node) int {
    if [1] == nil {
        return -1 // or an error value
    }
    current := root
    for current.right != nil {
        current = current.right
    }
    return current.value
}
Drag options to blanks, or click blank then click option'
Aroot
Broot.value
Ccurrent
Dcurrent.value
Attempts:
3 left
💡 Hint
Common Mistakes
Checking root.value instead of root for nil.
Not handling the empty tree case.
3fill in blank
hard

Fix the error in the loop condition to correctly traverse the BST to find the maximum element.

DSA Go
func findMax(root *Node) int {
    current := root
    for current.[1] != nil {
        current = current.[1]
    }
    return current.value
}
Drag options to blanks, or click blank then click option'
Aright
Bleft
Cparent
Dchild
Attempts:
3 left
💡 Hint
Common Mistakes
Using different fields in condition and assignment.
Using 'left' instead of 'right' in the loop.
4fill in blank
hard

Fill both blanks to complete the recursive function to find the maximum element in a BST.

DSA Go
func findMaxRecursive(root *Node) int {
    if root == nil || root.[1] == nil {
        return root.value
    }
    return findMaxRecursive(root.[2])
}
Drag options to blanks, or click blank then click option'
Aright
Bleft
Cparent
Dchild
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'left' instead of 'right' for traversal.
Checking wrong child pointers.
5fill in blank
hard

Fill all three blanks to complete the iterative function that finds the maximum element and returns its value.

DSA Go
func findMaxIterative(root *Node) int {
    if root == nil {
        return -1
    }
    current := root
    for current.[1] != nil {
        current = current.[2]
    }
    return current.[3]
}
Drag options to blanks, or click blank then click option'
Aleft
Bright
Cvalue
Dparent
Attempts:
3 left
💡 Hint
Common Mistakes
Returning the node instead of its value.
Using left child instead of right child for traversal.

Practice

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

Solution

  1. Step 1: Understand BST property

    In a BST, all nodes to the right of a node have greater values.
  2. Step 2: Locate maximum element

    The maximum element is found by moving to the rightmost node, as it has no greater right child.
  3. Final Answer:

    At the rightmost node -> Option B
  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 Go code snippets correctly finds the maximum element in a BST node structure?
easy
A. for current.Left != nil { current = current.Left } return current.Value
B. return root.Value
C. for current.Right != nil { current = current.Right } return current.Value
D. for current != nil { current = current.Left } return current.Value

Solution

  1. Step 1: Check loop condition for maximum

    Maximum is found by moving right until no right child exists.
  2. Step 2: Verify code correctness

    for current.Right != nil { current = current.Right } return current.Value correctly loops while current.Right is not nil, then returns current.Value.
  3. Final Answer:

    for current.Right != nil { current = current.Right } return current.Value -> Option C
  4. Quick Check:

    Loop right child until nil = max [OK]
Hint: Loop right child until nil to find max [OK]
Common Mistakes:
  • Looping left child instead of right
  • Returning root value without traversal
  • Loop condition incorrect or infinite
3. What will be the output of the following Go code snippet that finds the maximum element in a BST?
type Node struct {
    Value int
    Left  *Node
    Right *Node
}

func findMax(root *Node) int {
    current := root
    for current.Right != nil {
        current = current.Right
    }
    return current.Value
}

root := &Node{Value: 10}
root.Left = &Node{Value: 5}
root.Right = &Node{Value: 15}
root.Right.Right = &Node{Value: 20}

fmt.Println(findMax(root))
medium
A. 20
B. 15
C. 10
D. 5

Solution

  1. Step 1: Trace the BST structure

    Root is 10, right child 15, right-right child 20 (rightmost node).
  2. Step 2: Follow findMax function

    Function moves right until current.Right is nil, stopping at node with value 20.
  3. Final Answer:

    20 -> Option A
  4. Quick Check:

    Rightmost node value = 20 [OK]
Hint: Rightmost node value is maximum [OK]
Common Mistakes:
  • Returning root value instead of rightmost
  • Stopping at first right child
  • Confusing left and right pointers
4. The following Go function is intended to find the maximum element in a BST but contains a bug. What is the bug?
func findMax(root *Node) int {
    current := root
    for current.Left != nil {
        current = current.Left
    }
    return current.Value
}
medium
A. All of the above
B. It does not handle empty tree (nil root)
C. It returns the minimum element instead of maximum
D. It incorrectly traverses left children instead of right

Solution

  1. Step 1: Analyze traversal direction

    The code loops while current.Left != nil, moving left, which finds minimum, not maximum.
  2. Step 2: Check for other issues

    Function does not check if root is nil, which can cause runtime error.
  3. Final Answer:

    It incorrectly traverses left children instead of right; does not handle nil root; returns minimum instead of maximum -> Option A
  4. Quick Check:

    Left traversal + no nil check = bugs [OK]
Hint: Traverse right, check nil root to avoid bugs [OK]
Common Mistakes:
  • Using left instead of right pointer
  • Ignoring nil root check
  • Assuming code finds maximum correctly
5. Given a BST where some nodes have duplicate values, how would you modify the Go function to find the maximum element considering duplicates are allowed on the right subtree? Choose the best approach.
hard
A. Traverse left while current.Left != nil and current.Left.Value > current.Value
B. Return root.Value directly since duplicates are on right
C. Traverse right while current.Right != nil and current.Right.Value > current.Value
D. Traverse right while current.Right != nil only

Solution

  1. Step 1: Understand duplicates in BST

    In a BST allowing duplicates on right, right subtree values are >= current value.
  2. Step 2: Best traversal for maximum

    Traverse right while current.Right != nil only. Value checks like in C (>) stop early on equal duplicates before larger values (e.g., 10->10->12).
  3. Final Answer:

    Traverse right while current.Right != nil only -> Option D
  4. Quick Check:

    Structural rightmost traversal = max even with duplicates [OK]
Hint: Traverse right until nil regardless of duplicates [OK]
Common Mistakes:
  • Using strict > comparison, stopping early on equals
  • Traversing left instead of right
  • Returning root value 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