|
4 | 4 | * int val;
|
5 | 5 | * TreeNode left;
|
6 | 6 | * TreeNode right;
|
7 |
| - * TreeNode(int x) { val = x; } |
| 7 | + * TreeNode() {} |
| 8 | + * TreeNode(int val) { this.val = val; } |
| 9 | + * TreeNode(int val, TreeNode left, TreeNode right) { |
| 10 | + * this.val = val; |
| 11 | + * this.left = left; |
| 12 | + * this.right = right; |
| 13 | + * } |
8 | 14 | * }
|
9 | 15 | */
|
10 | 16 | classSolution {
|
11 |
| -Map<Integer,Integer>map; |
12 |
| -intdeepestLevel; |
13 | 17 | publicintdeepestLeavesSum(TreeNoderoot) {
|
14 |
| -map =newHashMap<>(); |
15 |
| -deepestLevel =0; |
16 |
| -helper(root,0); |
17 |
| -returnmap.get(deepestLevel); |
| 18 | +Map<Integer,Integer>map =newHashMap<>(); |
| 19 | +helper(root,0,map); |
| 20 | +returnmap.getOrDefault( |
| 21 | +map.keySet().stream().mapToInt(Integer::valueOf).max().orElse(0),0 |
| 22 | + ); |
18 | 23 | }
|
19 | 24 |
|
20 |
| -privatevoidhelper(TreeNoderoot,intlevel) { |
| 25 | +privatevoidhelper(TreeNoderoot,intcurrLevel,Map<Integer,Integer>map) { |
21 | 26 | if (root ==null) {
|
22 | 27 | return;
|
23 | 28 | }
|
24 |
| -if (root.left ==null &&root.right ==null) { |
25 |
| -map.put(level,map.getOrDefault(level,0) +root.val); |
26 |
| -deepestLevel =Math.max(deepestLevel,level); |
27 |
| -return; |
28 |
| - } |
29 |
| -helper(root.left,level +1); |
30 |
| -helper(root.right,level +1); |
| 29 | +map.put(currLevel,map.getOrDefault(currLevel,0) +root.val); |
| 30 | +helper(root.left,currLevel +1,map); |
| 31 | +helper(root.right,currLevel +1,map); |
31 | 32 | }
|
32 | 33 | }
|