Skip to content

Commit 83b86f7

Browse files
authored
Add solution to problem sum root to leaf
1 parent 4773038 commit 83b86f7

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

SumRootToLeaf.java

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package com.mckinsey.engage.risk.services;
2+
3+
import java.util.LinkedList;
4+
import java.util.List;
5+
6+
public class SumRootToLeaf {
7+
public void main(String[] args) {
8+
TreeNode tree = new TreeNode();
9+
List<String> allNumbersInString = convertRootToLeadDigitsIntoNumber(tree);
10+
int sum = 0;
11+
for (String number : allNumbersInString) {
12+
sum = sum + Integer.parseInt(number);
13+
}
14+
}
15+
16+
public int sumNumbers(TreeNode root) {
17+
List<String> allNumbersInString = convertRootToLeadDigitsIntoNumber(root);
18+
int sum = 0;
19+
for (String number : allNumbersInString) {
20+
sum = sum + Integer.parseInt(number);
21+
}
22+
23+
return sum;
24+
}
25+
26+
List<String> convertRootToLeadDigitsIntoNumber(TreeNode root) {
27+
if (root == null)
28+
return new LinkedList<>();
29+
30+
if (root.left == null && root.right == null) {
31+
LinkedList<String> list = new LinkedList<>();
32+
list.add(root.val + "");
33+
return list;
34+
}
35+
36+
List<String> rightSubtreeIntegers = convertRootToLeadDigitsIntoNumber(root.left);
37+
List<String> leftSubtreeIntegers = convertRootToLeadDigitsIntoNumber(root.right);
38+
39+
List<String> rootList = new LinkedList<>();
40+
41+
for (String number : rightSubtreeIntegers) {
42+
rootList.add(root.val + number);
43+
}
44+
45+
for (String number : leftSubtreeIntegers) {
46+
rootList.add(root.val + number);
47+
}
48+
49+
return rootList;
50+
}
51+
52+
Integer convertRootToLeadDigitsIntoNumber2nd(int sum, TreeNode root, int level) {
53+
if (root == null)
54+
return 0;
55+
56+
if (root.left == null && root.right == null) {
57+
sum = root.val;
58+
return sum;
59+
}
60+
61+
int sumTillNow = (int) ((sum * Math.pow(10, level)) + root.val);
62+
63+
Integer rightSubtreeSum = convertRootToLeadDigitsIntoNumber2nd(sumTillNow, root.left, level + 1);
64+
Integer leftSubtreeSum = convertRootToLeadDigitsIntoNumber2nd(sumTillNow, root.right, level + 1);
65+
66+
return rightSubtreeSum + leftSubtreeSum;
67+
}
68+
69+
70+
class TreeNode {
71+
int val;
72+
TreeNode left;
73+
TreeNode right;
74+
}
75+
}

0 commit comments

Comments
 (0)