Skip to content

Commit 0d17540

Browse files
MEDIUM/src/medium/SumRootToLeafNumbers.java
1 parent 6be1bcd commit 0d17540

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package medium;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import classes.TreeNode;
7+
8+
public class SumRootToLeafNumbers {
9+
//it could overflow when the tree is very deep/large, so definitely use long
10+
//let's assume it won't overflow first
11+
public int sumNumbers(TreeNode root) {
12+
if(root == null) return 0;
13+
List<Integer> allNumbers = new ArrayList();
14+
dfs(root, new StringBuilder(), allNumbers);
15+
int sum = 0;
16+
for(int i : allNumbers){
17+
sum += i;
18+
}
19+
return sum;
20+
}
21+
22+
private void dfs(TreeNode root, StringBuilder sb, List<Integer> allNumbers) {
23+
sb.append(root.val);
24+
if(root.left != null){
25+
dfs(root.left, sb, allNumbers);
26+
}
27+
if(root.right != null){
28+
dfs(root.right, sb, allNumbers);
29+
}
30+
if(root.left == null && root.right == null){
31+
allNumbers.add(Integer.parseInt(sb.toString()));
32+
}
33+
sb.deleteCharAt(sb.length()-1);
34+
}
35+
36+
public static void main(String... strings) {
37+
more_concise_version test = new more_concise_version();
38+
TreeNode root = new TreeNode(1);
39+
root.left = new TreeNode(2);
40+
root.right = new TreeNode(3);
41+
System.out.println(test.sumNumbers(root));
42+
}
43+
}
44+
45+
class more_concise_version{
46+
public int sumNumbers(TreeNode root) {
47+
return dfs(root, 0);
48+
}
49+
50+
private int dfs(TreeNode root, int sum) {
51+
if(root == null) return 0;
52+
if(root.left == null && root.right == null) return sum*10+root.val;
53+
return dfs(root.left, sum*10+root.val) + dfs(root.right, sum*10+root.val);
54+
}
55+
}
56+

0 commit comments

Comments
 (0)