129. Sum Root to Leaf Numbers 🔗

Difficulty: Medium - Tags: Binary Tree, Depth-First Search (DFS), Backtracking, Math

LeetCode Problem Linkarrow-up-right


Problem Statement 📜

You are given the root of a binary tree containing digits from 0 to 9 only.

Each root-to-leaf path in the tree represents a number. For example:

  • The root-to-leaf path 1 -> 2 -> 3 represents the number 123.

Task:

  • Return the total sum of all root-to-leaf numbers.

  • A leaf node is a node with no children.


Examples 🌟

🔹 Example 1:

Input:

Output:

Explanation:

  • The root-to-leaf path 1 -> 2 represents the number 12.

  • The root-to-leaf path 1 -> 3 represents the number 13.

Total sum: 12 + 13 = 25.


🔹 Example 2:

Input:

Output:

Explanation:

  • The root-to-leaf path 4 -> 9 -> 5 represents the number 495.

  • The root-to-leaf path 4 -> 9 -> 1 represents the number 491.

  • The root-to-leaf path 4 -> 0 represents the number 40.

Total sum: 495 + 491 + 40 = 1026.


Constraints ⚙️

  • The number of nodes in the tree is in the range [1, 1000].

  • 0 <= Node.val <= 9

  • The depth of the tree will not exceed 10.


Solution 💡

To compute the sum of all root-to-leaf numbers:

  1. Use Depth-First Search (DFS) or Backtracking to traverse the binary tree.

  2. Pass the current accumulated value (a running total) down the recursion stack.

  3. When a leaf node is reached, add the accumulated value to the result.


Java Solution


Explanation of the Solution

  1. DFS Traversal:

    • Start from the root with an initial currentSum of 0.

    • As you traverse, update currentSum by multiplying it by 10 and adding the node's value.

  2. Leaf Node Check:

    • If the current node is a leaf (no children), return the currentSum.

  3. Recursive Calls:

    • Recurse on the left and right children, passing the updated currentSum.

  4. Combine Results:

    • Add up the results from the left and right subtrees to get the total sum.


Time Complexity ⏳

  • O(n): Each node is visited once.

Space Complexity 💾

  • O(h): Where h is the height of the tree (due to recursion stack).


Follow-up Challenges 🧐

  1. How would you implement an iterative solution for this problem using a stack or queue?

  2. Could you optimize the memory usage further in the recursive solution?

You can find the full solution herearrow-up-right and what is DFS? here.

Last updated