Bird
Raised Fist0
DSA Typescriptprogramming~10 mins

BST Find Maximum Element in DSA Typescript - Execution Trace

Choose your learning style10 modes available
Concept Flow - BST Find Maximum Element
Start at root node
↓
Check if right child exists?
No→Current node is max
Yes↓
Move to right child
↩Back to check right child
Start at the root and keep moving right until no right child exists; that node is the maximum.
Execution Sample
DSA Typescript
function findMax(root: TreeNode | null): number | null {
  if (!root) return null;
  let current = root;
  while (current.right) {
    current = current.right;
  }
  return current.val;
}
This code finds the maximum value in a BST by moving right until no right child exists.
Execution Table
StepOperationCurrent Node ValueRight Child Exists?Pointer ChangesVisual State
1Start at root15Yescurrent = root (15)15 / \ 10 20 / \ 17 25
2Move to right child20Yescurrent = current.right (20)15 / \ 10 20 / \ 17 25
3Move to right child25Nocurrent = current.right (25)15 / \ 10 20 / \ 17 25
4Check right child25Nocurrent stays at 2515 / \ 10 20 / \ 17 25
5Return max value25N/AReturn 2515 / \ 10 20 / \ 17 25
💡 No right child at node 25, so 25 is the maximum element.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4Final
current.valN/A1520252525
current.rightN/ANode(20)Node(25)nullnullnull
Key Moments - 3 Insights
Why do we keep moving to the right child to find the maximum?
Because in a BST, all right children have values greater than their parent. The execution_table rows 1 to 4 show moving right until no right child exists.
What if the tree is empty (root is null)?
The code returns null immediately (see execution_sample line 2). No steps occur in execution_table because the tree is empty.
Why do we stop when current.right is null, not when current is null?
Because current is always a valid node. We stop when there is no right child to move to, meaning current is the max. See execution_table step 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of 'current.val' at Step 3?
A25
B15
C20
D17
💡 Hint
Check the 'Current Node Value' column at Step 3 in execution_table.
At which step does the condition 'Right Child Exists?' become No?
AStep 2
BStep 4
CStep 3
DStep 5
💡 Hint
Look at the 'Right Child Exists?' column in execution_table.
If the root had no right child, how would the execution_table change?
AIt would move to Step 2 and beyond
BIt would return null immediately
CIt would stop at Step 1 with 'Right Child Exists?' as No
DIt would cause an error
💡 Hint
Refer to the flow where right child check is done; if none exists at root, we stop immediately.
Concept Snapshot
BST Find Maximum Element:
- Start at root node
- While right child exists, move right
- When no right child, current node is max
- Return current node's value
- Works because BST right children are larger
Full Transcript
To find the maximum element in a Binary Search Tree (BST), start at the root node. Check if the current node has a right child. If yes, move to that right child and repeat. Continue moving right until you reach a node with no right child. That node contains the maximum value in the BST. If the tree is empty, return null. This works because in BSTs, right children always have greater values than their parents. The code sample shows this logic using a while loop. The execution table traces each step, showing the current node and pointer changes until the maximum is found.

Practice

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

Solution

  1. Step 1: Understand BST property

    In a BST, left child nodes are smaller and right child nodes are larger than the parent node.
  2. Step 2: Locate maximum element

    The maximum element is found by moving to the rightmost node because it has the largest value.
  3. Final Answer:

    At the rightmost node -> Option A
  4. Quick Check:

    Maximum element = rightmost node [OK]
Hint: Maximum is always the rightmost node in BST [OK]
Common Mistakes:
  • Thinking maximum is at the root
  • Confusing leftmost with maximum
  • Assuming maximum can be any leaf
2. Which TypeScript code snippet correctly finds the maximum element in a BST node?
easy
A. while(node.right !== null) { node = node.right; } return node.value;
B. return Math.max(node.value, findMax(node.left), findMax(node.right));
C. if(node.left === null) return node.value; else return findMax(node.left);
D. while(node.left !== null) { node = node.left; } return node.value;

Solution

  1. Step 1: Identify correct traversal direction

    To find maximum in BST, traverse right child nodes until no more right child exists.
  2. Step 2: Check code correctness

    while(node.right !== null) { node = node.right; } return node.value; uses a while loop to move right until right child is null, then returns node value.
  3. Final Answer:

    while(node.right !== null) { node = node.right; } return node.value; -> Option A
  4. Quick Check:

    Traverse right until null, then return value [OK]
Hint: Traverse right child nodes until none left [OK]
Common Mistakes:
  • Traversing left instead of right
  • Using recursion incorrectly
  • Using Math.max on subtree values (not BST property)
3. What will be the output of the following TypeScript code snippet?
class Node {
  constructor(public value: number, public left: Node | null = null, public right: Node | null = null) {}
}

function findMax(node: Node): number {
  while(node.right !== null) {
    node = node.right;
  }
  return node.value;
}

const root = new Node(10, new Node(5), new Node(15, null, new Node(20)));
console.log(findMax(root));
medium
A. 10
B. 5
C. 15
D. 20

Solution

  1. Step 1: Understand tree structure

    Root is 10, left child 5, right child 15, and 15's right child is 20.
  2. Step 2: Trace findMax function

    Function moves right from 10 to 15, then to 20, which has no right child, so returns 20.
  3. Final Answer:

    20 -> Option D
  4. Quick Check:

    Rightmost node value = 20 [OK]
Hint: Rightmost node value is maximum [OK]
Common Mistakes:
  • Returning root value instead of rightmost
  • Confusing left and right children
  • Not following right child chain fully
4. The following TypeScript function is intended to find the maximum element in a BST. What is the error?
function findMax(node: Node): number {
  while(node.left !== null) {
    node = node.left;
  }
  return node.value;
}
medium
A. It returns undefined because node.value is missing
B. It causes infinite loop if node.left is null
C. It traverses left instead of right, so returns minimum instead of maximum
D. It throws error because Node type is incorrect

Solution

  1. Step 1: Analyze traversal direction

    The function moves left child nodes, which leads to the minimum element in BST.
  2. Step 2: Identify correct traversal for maximum

    Maximum element requires moving right child nodes, not left.
  3. Final Answer:

    It traverses left instead of right, so returns minimum instead of maximum -> Option C
  4. Quick Check:

    Left traversal = minimum, not maximum [OK]
Hint: Traverse right for max, left for min [OK]
Common Mistakes:
  • Confusing left and right child traversal
  • Assuming left traversal finds maximum
  • Ignoring BST property of ordering
5. Given a BST where some nodes have only left children, how would you modify the findMax function to correctly find the maximum element even if the tree is skewed left?
hard
A. Return the root node's value directly since left skew means root is max
B. Traverse right child nodes until null; if none, return current node's value
C. Traverse left child nodes until null and return that value
D. Use recursion: return Math.max(node.value, findMax(node.left));

Solution

  1. Step 1: Understand left skewed BST

    In a BST, values in left subtree < node <= values in right subtree. Even if some nodes have no right children, the maximum is found by traversing right until null.
  2. Step 2: Modify findMax logic

    Traverse right child nodes until null; if no right child exists, current node is max.
  3. Final Answer:

    Traverse right child nodes until null; if none, return current node's value -> Option B
  4. Quick Check:

    Right traversal or current node if no right child [OK]
Hint: Check right child; if none, current node is max [OK]
Common Mistakes:
  • Assuming root is always max in left skew
  • Traversing left to find max
  • Using recursion unnecessarily for simple right 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