How to count sum for root to leaf numbers
Given a binary tree, each node has a value from 0 to 9. Each path from a root to a leaf represents a number, return a sum of all these numbers
Example 1
Input: 1
/ \
5 4
Output: 29
Explanation:
1 -> 5= 15,1 -> 4= 14, 15 + 14 = 29
Example 2
Input: 1
/ \
2 3
/ /
4 5
/ \
6 0
Output: 2830
Explanation:
1 -> 2 -> 4= 124,1 -> 3 -> 5 -> 6= 1356,1 -> 3 -> 5 -> 0= 1350
Algorithm
Let's see one example in details and try to find out the algorithm to solve this problem

This binary tree has two paths:
1 -> 2 -> 4=1241 -> 5=15

Let's see how can we get 124. On level 1 there is 1, on the level 2 - 12, on the level 3 - 124. On each level, we multiply the previous number on 10 and add the node's value.

Code
public int SumNumbers(TreeNode root)
{
return SumNumbers(root, 0);
}
private static int SumNumbers(TreeNode root, int sum)
{
if (root == null)
{
return 0;
}
sum = sum * 10 + root.Value;
if (root.Left == null && root.Right == null)
{
return sum;
}
return SumNumbers(root.Left, sum) + SumNumbers(root.Right, sum);
}
Time Complexity: O(n)
Recent articles
Nice to read