1 /** 2 * Definition for binary tree 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 public class Solution { 11 public int sumNumbers(TreeNode root) { 12 // IMPORTANT: Please reset any member data you declared, as 13 // the same Solution instance will be reused for each test case. 14 ArrayList<Integer> result = new ArrayList<Integer>(); 15 if(root == null) 16 return 0; 17 dfs(result, 0, root); 18 int sum = 0; 19 for(int i:result) 20 sum += i; 21 return sum; 22 } 23 24 private void dfs(ArrayList<Integer> result, int now, TreeNode root){ 25 if(root.left == null && root.right == null){ 26 result.add(10*now+root.val); 27 return; 28 } 29 now = now * 10 + root.val; 30 if(root.left!=null) 31 dfs(result, now, root.left); 32 if(root.right!=null) 33 dfs(result, now, root.right); 34 } 35 }