|
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