# 1161. Maximum Level Sum of a Binary Tree

Medium
Given the `root` of a binary tree, the level of its root is `1`, the level of its children is `2`, and so on.
Return the smallest level `x` such that the sum of all the values of nodes at level `x` is maximal.
Example 1: Input: root = [1,7,0,7,-8,null,null]
Output:
2
Explanation:
Level 1 sum = 1.
Level 2 sum = 7 + 0 = 7.
Level 3 sum = 7 + -8 = -1.
So we return the level with the maximum sum which is level 2.
Example 2:
Input: root = [989,null,10250,98693,-89388,null,null,null,-32127]
Output:
2
Constraints:
• The number of nodes in the tree is in the range `[1, 104]`.
• `-105 <= Node.val <= 105`

### 解題

Runtime: 143 ms, faster than 84.33%
Memory Usage: 8.7 MB, less than 55.56%
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func maxLevelSum(root *TreeNode) int {
m := make(map[int]int)
var helper func(*TreeNode, int)
helper = func(root *TreeNode, depth int) {
if root == nil {
return
}
if _, ok := m[depth]; ok {
m[depth] += root.Val
} else {
m[depth] = root.Val
}
helper(root.Left, depth + 1)
helper(root.Right, depth + 1)
}
helper(root, 1)
max := 1
for k := range m {
if m[k] > m[max] {
max = k
}
}
return max
}