Bird
Raised Fist0
DSA Goprogramming~5 mins

Maximum Path Sum in Binary Tree in DSA Go - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the definition of the Maximum Path Sum in a Binary Tree?
It is the largest sum of values obtained by any path in the binary tree. A path can start and end at any node, and must follow parent-child connections.
Click to reveal answer
intermediate
Why do we consider negative values when calculating Maximum Path Sum?
Because nodes can have negative values, and including them might reduce the total sum. We ignore paths with negative sums by choosing zero instead.
Click to reveal answer
intermediate
In the Maximum Path Sum problem, what does the recursive function typically return?
It returns the maximum sum of a path starting from the current node and extending downwards to one child, or zero if all are negative.
Click to reveal answer
intermediate
How do we update the global maximum path sum during recursion?
At each node, we calculate the sum of the node's value plus the maximum sums from left and right children. If this sum is greater than the current global max, we update it.
Click to reveal answer
beginner
What is the time complexity of the Maximum Path Sum algorithm in a binary tree?
The time complexity is O(n), where n is the number of nodes, because we visit each node once during the recursion.
Click to reveal answer
What does a path in the Maximum Path Sum problem represent?
AA sequence of nodes connected by parent-child links
BAny random nodes in the tree
COnly leaf nodes
DNodes connected horizontally
If a node's left and right child paths have negative sums, what should the recursion return for that node?
ANegative infinity
BThe node's value only
CThe sum of both children plus node's value
DZero or the node's value, whichever is larger
When do we update the global maximum path sum during recursion?
AAt every node, considering node + left + right sums
BOnly at leaf nodes
COnly at the root node
DAfter recursion finishes
What is the base case for the recursion in Maximum Path Sum?
AWhen the node is a leaf, return its value
BWhen the node has two children
CWhen the node is null, return zero
DWhen the node value is negative
What is the overall time complexity of the Maximum Path Sum algorithm?
AO(n^2)
BO(n)
CO(log n)
DO(n log n)
Explain how the recursive function helps find the Maximum Path Sum in a binary tree.
Think about how each node contributes to the path and how recursion combines results.
You got /4 concepts.
    Describe the role of the global variable in the Maximum Path Sum algorithm.
    Why do we need to keep track of the best path sum globally?
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the term Maximum Path Sum in a binary tree mean?
      easy
      A. The largest sum of values along any path between two nodes in the tree
      B. The sum of all node values in the tree
      C. The sum of values from root to the leftmost leaf
      D. The smallest sum of values along any path in the tree

      Solution

      1. Step 1: Understand the path definition

        The path can start and end at any two nodes, not necessarily root or leaf.
      2. Step 2: Identify maximum sum meaning

        We look for the path with the highest total sum of node values.
      3. Final Answer:

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

        Maximum path sum means highest sum between any two nodes [OK]
      Hint: Maximum path sum is any path with highest total node values [OK]
      Common Mistakes:
      • Thinking path must start at root
      • Confusing maximum path sum with total tree sum
      • Assuming path must end at leaf
      2. Which of the following Go function signatures is correct for a function that calculates maximum path sum in a binary tree node defined as type TreeNode struct { Val int; Left, Right *TreeNode }?
      easy
      A. func maxPathSum(root *TreeNode) int
      B. func maxPathSum(root TreeNode) int
      C. func maxPathSum(root *TreeNode) *int
      D. func maxPathSum(root *TreeNode) string

      Solution

      1. Step 1: Check parameter type

        Function should accept pointer to TreeNode to avoid copying the whole tree.
      2. Step 2: Check return type

        Maximum path sum is an integer value, so return type should be int.
      3. Final Answer:

        func maxPathSum(root *TreeNode) int -> Option A
      4. Quick Check:

        Pointer input and int output for max path sum [OK]
      Hint: Use pointer receiver and int return for tree max path sum [OK]
      Common Mistakes:
      • Passing TreeNode by value causing copies
      • Returning pointer instead of int
      • Returning string instead of int
      3. Given the following Go code snippet, what is the printed output?
      type TreeNode struct {
          Val   int
          Left  *TreeNode
          Right *TreeNode
      }
      
      func maxPathSum(root *TreeNode) int {
          maxSum := -1 << 31
          var maxGain func(node *TreeNode) int
          maxGain = func(node *TreeNode) int {
              if node == nil {
                  return 0
              }
              leftGain := max(0, maxGain(node.Left))
              rightGain := max(0, maxGain(node.Right))
              priceNewPath := node.Val + leftGain + rightGain
              if priceNewPath > maxSum {
                  maxSum = priceNewPath
              }
              return node.Val + max(leftGain, rightGain)
          }
          maxGain(root)
          return maxSum
      }
      
      func max(a, b int) int {
          if a > b {
              return a
          }
          return b
      }
      
      func main() {
          root := &TreeNode{Val: -10}
          root.Left = &TreeNode{Val: 9}
          root.Right = &TreeNode{Val: 20}
          root.Right.Left = &TreeNode{Val: 15}
          root.Right.Right = &TreeNode{Val: 7}
          fmt.Println(maxPathSum(root))
      }
      medium
      A. 27
      B. 42
      C. 35
      D. 20

      Solution

      1. Step 1: Trace maxGain for each node

        Calculate max gain from left and right subtree ignoring negatives: - Node 9: maxGain = 9 - Node 15: maxGain = 15 - Node 7: maxGain = 7 - Node 20: maxGain = 20 + max(15,7) = 35 - Root -10: maxGain = -10 + max(9,35) = 25 Check maxSum updates: - At node 9: maxSum = 9 - At node 15: maxSum = 15 - At node 7: maxSum = 15 (unchanged) - At node 20: priceNewPath = 20 + 15 + 7 = 42, maxSum = 42 - At root: priceNewPath = -10 + 9 + 35 = 34 (maxSum stays 42)
      2. Step 2: Return maxSum

        maxSum is 42 after full traversal.
      3. Final Answer:

        42 -> Option B
      4. Quick Check:

        Max path sum = 42 [OK]
      Hint: Add node value plus max gains from left and right, track max sum [OK]
      Common Mistakes:
      • Not ignoring negative gains
      • Returning max gain instead of max path sum
      • Miscomputing path sums including negative nodes
      4. The following Go function attempts to compute the maximum path sum in a binary tree but has a bug. What is the bug?
      func maxPathSum(root *TreeNode) int {
          maxSum := -1 << 31
          var maxGain func(node *TreeNode) int
          maxGain = func(node *TreeNode) int {
              if node == nil {
                  return 0
              }
              leftGain := maxGain(node.Left)
              rightGain := maxGain(node.Right)
              priceNewPath := node.Val + leftGain + rightGain
              if priceNewPath > maxSum {
                  maxSum = priceNewPath
              }
              return node.Val + max(leftGain, rightGain)
          }
          maxGain(root)
          return maxSum
      }
      medium
      A. It does not handle nil root
      B. It returns maxSum before traversal
      C. It does not ignore negative gains from left or right subtrees
      D. It uses incorrect initial value for maxSum

      Solution

      1. Step 1: Analyze gain calculation

        The function uses leftGain and rightGain directly without ignoring negative values, which can reduce the path sum.
      2. Step 2: Identify fix

        To fix, use max(0, leftGain) and max(0, rightGain) to ignore negative gains.
      3. Final Answer:

        It does not ignore negative gains from left or right subtrees -> Option C
      4. Quick Check:

        Negative gains must be ignored for correct max path sum [OK]
      Hint: Always ignore negative subtree sums by max(0, gain) [OK]
      Common Mistakes:
      • Not ignoring negative subtree sums
      • Wrong initial maxSum value
      • Returning before traversal completes
      5. You want to find the maximum path sum in a binary tree where some nodes have negative values. Which approach correctly handles this scenario? A) Use a recursive function that returns the maximum gain from each node, ignoring negative gains by taking max(0, gain), and update a global max sum including both left and right gains plus node value. B) Use a recursive function that sums all node values and returns the total. C) Use a breadth-first search to find the maximum node value and return it. D) Use a recursive function that only considers paths from root to leaf nodes.
      hard
      A. Consider only root-to-leaf paths recursively
      B. Sum all node values recursively and return total
      C. Find maximum node value using BFS and return it
      D. Use recursion with max(0, gain) and update max sum including both children

      Solution

      1. Step 1: Understand negative values impact

        Negative node values can reduce path sums, so ignoring negative gains is necessary.
      2. Step 2: Choose correct approach

        Use recursion with max(0, gain) and update max sum including both children uses recursion with max(0, gain) to ignore negative paths and updates max sum considering both left and right children plus current node, which correctly finds maximum path sum anywhere in the tree.
      3. Final Answer:

        Use recursion with max(0, gain) and update max sum including both children -> Option D
      4. Quick Check:

        Ignore negative gains and consider all paths for max sum [OK]
      Hint: Ignore negative gains and consider all paths recursively [OK]
      Common Mistakes:
      • Summing all nodes ignoring path constraints
      • Only considering root-to-leaf paths
      • Returning max node value instead of path sum
      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