|
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 | class Solution {
|
11 |
| - Map<Integer, Integer> map; |
12 |
| - int deepestLevel; |
13 | 17 | public int deepestLeavesSum(TreeNode root) {
|
14 |
| - map = new HashMap<>(); |
15 |
| - deepestLevel = 0; |
16 |
| - helper(root, 0); |
17 |
| - return map.get(deepestLevel); |
| 18 | + Map<Integer, Integer> map = new HashMap<>(); |
| 19 | + helper(root, 0, map); |
| 20 | + return map.getOrDefault( |
| 21 | + map.keySet().stream().mapToInt(Integer::valueOf).max().orElse(0), 0 |
| 22 | + ); |
18 | 23 | }
|
19 | 24 |
|
20 |
| - private void helper(TreeNode root, int level) { |
| 25 | + private void helper(TreeNode root, int currLevel, 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 | }
|
0 commit comments