Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

DP on Trees Maximum Path Sum in DSA Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the "Maximum Path Sum" problem in trees?
It is the problem of finding the highest sum of node values along any path in a tree. The path can start and end at any nodes, and must follow parent-child connections.
Click to reveal answer
intermediate
Why do we use Dynamic Programming (DP) on trees for Maximum Path Sum?
Because the problem involves overlapping subproblems on tree nodes, DP helps by storing results of subtrees to avoid repeated calculations and efficiently find the max path sum.
Click to reveal answer
intermediate
In DP on trees for Maximum Path Sum, what does the recursive function usually return?
It returns the maximum path sum starting from the current node and extending down to one of its children, which can be used by its parent to form larger paths.
Click to reveal answer
intermediate
How do we handle negative node values in Maximum Path Sum on trees?
We compare the node's value with sums including children and choose the maximum. If children sums are negative, we ignore them by taking zero instead, ensuring the path sum doesn't decrease.
Click to reveal answer
intermediate
What is the role of a global variable in the DP solution for Maximum Path Sum on trees?
It keeps track of the overall maximum path sum found so far during recursion, since the best path may not pass through the root or be returned by the recursive calls.
Click to reveal answer
In the Maximum Path Sum problem on trees, what does a path consist of?
AAny sequence of nodes connected by edges, without repeating nodes
BOnly paths from root to leaf nodes
COnly paths that include the root node
DOnly paths that include leaf nodes
What does the recursive DP function return in Maximum Path Sum on trees?
AMinimum path sum from root to current node
BMaximum path sum including both children and current node
CSum of all nodes in the subtree
DMaximum path sum starting at current node and extending down one child
How do we treat negative sums from children in Maximum Path Sum DP?
AAdd them anyway to the current node value
BIgnore them by taking zero instead
CSubtract them from the current node value
DStop recursion when negative sums appear
Why do we need a global variable in the DP solution for Maximum Path Sum?
ATo store the maximum path sum found anywhere in the tree
BTo count the number of nodes visited
CTo store the sum of all nodes in the tree
DTo keep track of the current node value
Which of these is NOT true about Maximum Path Sum in trees?
AThe path can start and end at any nodes
BThe path must be simple (no repeated nodes)
CThe path must include the root node
DThe path follows parent-child connections
Explain how dynamic programming helps solve the Maximum Path Sum problem on trees.
Think about how results from children help solve parent's problem.
You got /4 concepts.
    Describe how to handle negative node values when finding the Maximum Path Sum in a tree.
    Negative sums can reduce total path sum, so consider skipping them.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the "maximum path sum" in a tree represent in the context of dynamic programming on trees?
      easy
      A. The sum of all node values in the tree
      B. The largest sum of node values along any path between two nodes in the tree
      C. The maximum value of a single node in the tree
      D. The longest path length in the tree

      Solution

      1. Step 1: Understand the problem definition

        The maximum path sum is about finding the path between any two nodes that yields the highest sum of node values.
      2. Step 2: Differentiate from other sums

        It is not the sum of all nodes or just the max node value, but the max sum along a connected path.
      3. Final Answer:

        The largest sum of node values along any path between two nodes in the tree -> Option B
      4. Quick Check:

        Maximum path sum = max sum on any path [OK]
      Hint: Maximum path sum is about any path, not whole tree sum [OK]
      Common Mistakes:
      • Confusing maximum path sum with sum of all nodes
      • Thinking it is just the max node value
      • Assuming path must start at root
      2. Which of the following TypeScript function signatures correctly represents a recursive function to find maximum path sum in a binary tree node?
      easy
      A. function maxPathSum(node: TreeNode): void
      B. function maxPathSum(node: number): number
      C. function maxPathSum(): number
      D. function maxPathSum(node: TreeNode | null): number

      Solution

      1. Step 1: Check parameter type

        The function must accept a TreeNode or null to handle empty nodes.
      2. Step 2: Check return type

        It should return a number representing the max path sum from that node.
      3. Final Answer:

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

        Correct parameter and return type [OK]
      Hint: Function must accept node or null and return number [OK]
      Common Mistakes:
      • Using wrong parameter type (e.g., number instead of TreeNode)
      • Returning void instead of number
      • Not allowing null for leaf children
      3. Consider the following TypeScript code snippet for maximum path sum in a binary tree:
      class TreeNode {
        val: number;
        left: TreeNode | null;
        right: TreeNode | null;
        constructor(val = 0, 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 dfs(node: TreeNode | null): number {
          if (!node) return 0;
          const left = Math.max(dfs(node.left), 0);
          const right = Math.max(dfs(node.right), 0);
          maxSum = Math.max(maxSum, node.val + left + right);
          return node.val + Math.max(left, right);
        }
        dfs(root);
        return maxSum;
      }
      
      const tree = new TreeNode(1, new TreeNode(2), new TreeNode(3));
      console.log(maxPathSum(tree));

      What is the output of this code?
      medium
      A. 3
      B. 5
      C. 6
      D. 1

      Solution

      1. Step 1: Trace DFS on tree nodes

        For node 2 and 3, max path sums are 2 and 3 respectively. For root 1, left=2, right=3.
      2. Step 2: Calculate maxSum updates

        maxSum updates to max(-Infinity, 1+2+3) = 6. Return value for root is 1 + max(2,3) = 4 but maxSum remains 6.
      3. Final Answer:

        6 -> Option C
      4. Quick Check:

        Sum of path 2->1->3 = 6 [OK]
      Hint: Sum left + node + right for max path sum [OK]
      Common Mistakes:
      • Returning max path from root only, ignoring subtrees
      • Not using Math.max with 0 to ignore negative sums
      • Confusing return value with maxSum global
      4. The following TypeScript code attempts to find the maximum path sum in a binary tree but has a bug:
      function maxPathSum(root: TreeNode | null): number {
        let maxSum = -Infinity;
        function dfs(node: TreeNode | null): number {
          if (!node) return 0;
          const left = dfs(node.left);
          const right = dfs(node.right);
          maxSum = Math.max(maxSum, node.val + left + right);
          return node.val + Math.max(left, right);
        }
        dfs(root);
        return maxSum;
      }

      What is the bug in this code?
      medium
      A. It does not ignore negative sums from left or right subtree
      B. It returns void instead of number
      C. It does not handle null root
      D. It uses global variable incorrectly

      Solution

      1. Step 1: Analyze subtree sums usage

        The code uses left and right sums directly without ignoring negative values.
      2. Step 2: Identify impact on maxSum

        Negative sums can reduce maxSum, so we must use Math.max(dfs(...), 0) to ignore negatives.
      3. Final Answer:

        It does not ignore negative sums from left or right subtree -> Option A
      4. Quick Check:

        Negative subtree sums must be ignored [OK]
      Hint: Use Math.max(dfs(...), 0) to ignore negatives [OK]
      Common Mistakes:
      • Not checking for negative subtree sums
      • Assuming dfs returns void
      • Ignoring null root case
      5. Given a binary tree where some nodes have negative values, how would you modify the dynamic programming approach to find the maximum path sum that can start and end at any node, but the path must go downwards (only from parent to child)?
      hard
      A. Use DFS to compute max downward path sum at each node ignoring negative sums by max(0, childSum)
      B. Use BFS to find the longest path ignoring node values
      C. Sum all node values and subtract minimum node value
      D. Only consider paths that include the root node

      Solution

      1. Step 1: Understand downward path constraint

        The path must go downwards from parent to child, so use DFS to explore children.
      2. Step 2: Handle negative values

        Ignore negative sums by taking max(0, childSum) to avoid reducing path sum.
      3. Step 3: Calculate max path sum

        At each node, max downward path sum = node.val + max(leftChildSum, rightChildSum, 0).
      4. Final Answer:

        Use DFS to compute max downward path sum at each node ignoring negative sums by max(0, childSum) -> Option A
      5. Quick Check:

        Downward path + ignore negatives = DFS with max(0, childSum) [OK]
      Hint: Downward path max sum uses DFS and max(0, childSum) [OK]
      Common Mistakes:
      • Using BFS instead of DFS
      • Ignoring negative values incorrectly
      • Forcing path through root only
      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