import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
private List<Integer> res = new ArrayList<>();
/**
*
* @param root TreeNode类
* @return int整型
*/
public int sumNumbers (TreeNode root) {
// write code here
backtrack(root, new ArrayList<>());
int sum = 0;
for (int num : res) {
sum += num;
}
return sum;
}
private void backtrack(TreeNode root, List<Integer> list) {
if (root == null) {
return;
}
list.add(root.val);
if (root.left == null && root.right == null) {
res.add(list2Int(new ArrayList<>(list)));
}
backtrack(root.left, list);
backtrack(root.right, list);
list.remove(list.size() - 1);
}
private int list2Int(List<Integer> list) {
StringBuilder sb = new StringBuilder();
for (int num : list) {
sb.append(num);
}
return Integer.parseInt(sb.toString());
}
}