Sum Root to Leaf Numbers
Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number. An example is the root-to-leaf path 1->2->3 which represents the number 123.
Find the total sum of all root-to-leaf numbers.
For example,
1
/ \ 2 3
The root-to-leaf path 1->2 represents the number 12. The root-to-leaf path 1->3 represents the number 13.
Return the sum = 12 + 13 = 25.
Solution
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int sumNumbers(TreeNode root) {
if(root == null) return 0;
int[] value = new int[1];
sumNumbers(root, value, new ArrayList<>());
return value[0];
}
public void sumNumbers(TreeNode root, int[] value, List<Integer> current) {
;
current.add(root.val);
if (root.left == null && root.right == null) {
value[0] += convert(current);
} else {
if (root.left != null) {
sumNumbers(root.left, value, current);
}
if (root.right != null) {
sumNumbers(root.right, value, current);
}
}
if (!current.isEmpty())
current.remove(current.size() - 1);
}
public int convert(List<Integer> list) {
int sum = 0;
int temp = 1;
for (int i = list.size() - 1; i >= 0; i--) {
sum += temp * list.get(i);
temp *= 10;
}
return sum;
}
}