Bird
Raised Fist0
DSA Typescriptprogramming~10 mins

Maximum Path Sum in Binary Tree in DSA Typescript - Interactive Practice

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

Complete the code to define the TreeNode class with a value property.

DSA Typescript
class TreeNode {
  val: number;
  left: TreeNode | null;
  right: TreeNode | null;
  constructor(val: number) {
    this.val = [1];
    this.left = null;
    this.right = null;
  }
}
Drag options to blanks, or click blank then click option'
Aval
Bvalue
CnodeVal
Dnum
Attempts:
3 left
💡 Hint
Common Mistakes
Using a different variable name than the constructor parameter.
Forgetting to assign the value to 'this.val'.
2fill in blank
medium

Complete the code to return the maximum path sum starting from the current node and going down.

DSA Typescript
function maxGain(node: TreeNode | null): number {
  if (node === null) return 0;
  const leftGain = Math.max(maxGain(node.left), [1]);
  const rightGain = Math.max(maxGain(node.right), 0);
  return node.val + Math.max(leftGain, rightGain);
}
Drag options to blanks, or click blank then click option'
A0
Bnode.val
C-Infinity
D1
Attempts:
3 left
💡 Hint
Common Mistakes
Using node.val instead of 0, which can add negative values.
Using 1 or -Infinity which are not correct for ignoring negatives.
3fill in blank
hard

Fix the error in updating the global maximum path sum inside the helper function.

DSA Typescript
let maxSum = -Infinity;
function maxGain(node: TreeNode | null): number {
  if (node === null) return 0;
  const leftGain = Math.max(maxGain(node.left), 0);
  const rightGain = Math.max(maxGain(node.right), 0);
  const priceNewpath = node.val + leftGain + rightGain;
  maxSum = Math.max(maxSum, [1]);
  return node.val + Math.max(leftGain, rightGain);
}
Drag options to blanks, or click blank then click option'
AmaxGain(node)
BpriceNewpath
Cnode.val
DleftGain + rightGain
Attempts:
3 left
💡 Hint
Common Mistakes
Using node.val alone, missing child gains.
Using maxGain(node) which causes infinite recursion.
Using leftGain + rightGain without node.val.
4fill in blank
hard

Fill both blanks to complete the main function that returns the maximum path sum in the binary tree.

DSA Typescript
function maxPathSum(root: TreeNode | null): number {
  let maxSum = -Infinity;
  function maxGain(node: TreeNode | null): number {
    if (node === null) return 0;
    const leftGain = Math.max(maxGain(node.left), 0);
    const rightGain = Math.max(maxGain(node.right), 0);
    const priceNewpath = node.val + leftGain + rightGain;
    maxSum = Math.max(maxSum, priceNewpath);
    return node.val + Math.max(leftGain, rightGain);
  }
  maxGain([1]);
  return [2];
}
Drag options to blanks, or click blank then click option'
Aroot
BmaxSum
Cnull
DmaxGain
Attempts:
3 left
💡 Hint
Common Mistakes
Passing null to maxGain instead of root.
Returning maxGain instead of maxSum.
Returning root instead of maxSum.
5fill in blank
hard

Fill all three blanks to complete the function that calculates the maximum path sum using a helper and global variable.

DSA Typescript
let maxSum = -Infinity;
function maxPathSum(root: TreeNode | null): number {
  function maxGain(node: TreeNode | null): number {
    if (node === null) return 0;
    const leftGain = Math.max(maxGain(node.left), [1]);
    const rightGain = Math.max(maxGain(node.right), [2]);
    const priceNewpath = node.val + leftGain + rightGain;
    maxSum = Math.max(maxSum, priceNewpath);
    return node.val + Math.max(leftGain, rightGain);
  }
  maxGain([3]);
  return maxSum;
}
Drag options to blanks, or click blank then click option'
A0
B-Infinity
Croot
Dnull
Attempts:
3 left
💡 Hint
Common Mistakes
Using -Infinity instead of 0 for gains.
Starting recursion from null.
Not ignoring negative gains.

Practice

(1/5)
1. What does the "Maximum Path Sum in Binary Tree" problem ask you to find?
easy
A. The highest sum of node values along any path in the tree
B. The longest path length in the tree
C. The sum of all node values in the tree
D. The minimum value node in the tree

Solution

  1. Step 1: Understand the problem goal

    The problem asks for the maximum sum of values along any path in the binary tree, where a path can start and end at any nodes.
  2. Step 2: Differentiate from other tree sums

    This is different from longest path or total sum; it focuses on the maximum sum achievable on any path.
  3. Final Answer:

    The highest sum of node values along any path in the tree -> Option A
  4. Quick Check:

    Maximum path sum = highest node value sum [OK]
Hint: Focus on sums along paths, not lengths or totals [OK]
Common Mistakes:
  • Confusing path sum with longest path length
  • Summing all nodes instead of a path
  • Looking for minimum instead of maximum
2. Which TypeScript function signature correctly represents a function to find maximum path sum in a binary tree node?
easy
A. function maxPathSum(root: number[]): number
B. function maxPathSum(root: TreeNode | null): number
C. function maxPathSum(root: string): string
D. function maxPathSum(root: TreeNode): void

Solution

  1. Step 1: Identify correct parameter type

    The function should accept a binary tree node or null, so TreeNode | null is correct.
  2. Step 2: Identify correct return type

    The function returns a number representing the maximum path sum, so return type is number.
  3. Final Answer:

    function maxPathSum(root: TreeNode | null): number -> Option B
  4. Quick Check:

    Input: TreeNode or null, Output: number [OK]
Hint: Function input is tree node or null, output is number [OK]
Common Mistakes:
  • Using array or string instead of TreeNode
  • Returning void instead of number
  • Not allowing null as input
3. Given the following TypeScript code, what is the output?
class TreeNode {
  val: number;
  left: TreeNode | null;
  right: TreeNode | null;
  constructor(val: number, left: TreeNode | null = null, right: TreeNode | null = null) {
    this.val = val;
    this.left = left;
    this.right = right;
  }
}

function maxPathSum(root: TreeNode | null): number {
  let maxSum = -Infinity;
  function helper(node: TreeNode | null): number {
    if (!node) return 0;
    const left = Math.max(helper(node.left), 0);
    const right = Math.max(helper(node.right), 0);
    maxSum = Math.max(maxSum, node.val + left + right);
    return node.val + Math.max(left, right);
  }
  helper(root);
  return maxSum;
}

const tree = new TreeNode(1, new TreeNode(2), new TreeNode(3));
console.log(maxPathSum(tree));
medium
A. 3
B. 5
C. 1
D. 6

Solution

  1. Step 1: Calculate max path sums for each node

    Node 2 and 3 have no children, so max path sums are 2 and 3. For root 1, left=2, right=3, total=1+2+3=6.
  2. Step 2: Determine maximum path sum

    Maximum path sum is max of all nodes' sums: max(2,3,6) = 6.
  3. Final Answer:

    6 -> Option D
  4. Quick Check:

    Sum(1+2+3) = 6 [OK]
Hint: Sum node + max left + max right, ignore negatives [OK]
Common Mistakes:
  • Ignoring zero floor for negative sums
  • Returning sum of only root and one child
  • Confusing return value with maxSum variable
4. Identify the bug in this TypeScript function for maximum path sum:
function maxPathSum(root: TreeNode | null): number {
  let maxSum = 0;
  function helper(node: TreeNode | null): number {
    if (!node) return 0;
    const left = helper(node.left);
    const right = helper(node.right);
    maxSum = Math.max(maxSum, node.val + left + right);
    return node.val + Math.max(left, right);
  }
  helper(root);
  return maxSum;
}
medium
A. Returns node.val + min(left, right) instead of max
B. helper function missing base case
C. maxSum initialized to 0 instead of -Infinity
D. Does not call helper on root

Solution

  1. Step 1: Check maxSum initialization

    maxSum initialized to 0 can cause wrong result if all node values are negative.
  2. Step 2: Correct initialization for negative values

    Initialize maxSum to -Infinity to handle negative node values correctly.
  3. Final Answer:

    maxSum initialized to 0 instead of -Infinity -> Option C
  4. Quick Check:

    maxSum must start at -Infinity for negative nodes [OK]
Hint: Initialize maxSum to -Infinity to handle negatives [OK]
Common Mistakes:
  • Starting maxSum at 0 causes wrong max for negative trees
  • Forgetting base case returns 0
  • Using min instead of max for return
5. Given a binary tree with nodes: root= -10, left=9, right=20, right.left=15, right.right=7, what is the maximum path sum?
hard
A. 42
B. 35
C. 27
D. 20

Solution

  1. Step 1: Calculate max path sums for subtrees

    Right subtree max path: 15 + 20 + 7 = 42. Left subtree max is 9. Root is -10.
  2. Step 2: Determine overall max path sum

    Max path sum is max of 42 (right subtree path), 9 (left), and paths including root. The max is 42.
  3. Final Answer:

    42 -> Option A
  4. Quick Check:

    Sum(15+20+7) = 42 [OK]
Hint: Check all subtree sums including root, pick max [OK]
Common Mistakes:
  • Ignoring path through both children and root
  • Choosing sum of root and one child only
  • Not considering negative root value impact
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