@@ -13,11 +13,7 @@ public int sumNumbers(TreeNode root) {
13
13
}
14
14
List <Integer > allNumbers = new ArrayList ();
15
15
dfs (root , new StringBuilder (), allNumbers );
16
- int sum = 0 ;
17
- for (int i : allNumbers ) {
18
- sum += i ;
19
- }
20
- return sum ;
16
+ return allNumbers .stream ().mapToInt (i -> i ).sum ();
21
17
}
22
18
23
19
private void dfs (TreeNode root , StringBuilder sb , List <Integer > allNumbers ) {
@@ -31,6 +27,8 @@ private void dfs(TreeNode root, StringBuilder sb, List<Integer> allNumbers) {
31
27
if (root .left == null && root .right == null ) {
32
28
allNumbers .add (Integer .parseInt (sb .toString ()));
33
29
}
30
+ //this is to delete the last value. since it's guaranteed that the value is between [0,9], so only one char needs to be deleted.
31
+ //however if the value is >= 10 then this approach needs to be adjusted
34
32
sb .deleteCharAt (sb .length () - 1 );
35
33
}
36
34
}
@@ -47,7 +45,9 @@ private int dfs(TreeNode root, int sum) {
47
45
if (root .left == null && root .right == null ) {
48
46
return sum * 10 + root .val ;
49
47
}
50
- return dfs (root .left , sum * 10 + root .val ) + dfs (root .right , sum * 10 + root .val );
48
+ int left = dfs (root .left , sum * 10 + root .val );
49
+ int right = dfs (root .right , sum * 10 + root .val );
50
+ return left + right ;
51
51
}
52
52
}
53
53
0 commit comments