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
}