637. Average of Levels in Binary Tree

Easy

Given the root of a binary tree, return the average value of the nodes on each level in the form of an array. Answers within 10-5 of the actual answer will be accepted.

Example 1:

Input: root = [3,9,20,null,null,15,7]
Output:
 [3.00000,14.50000,11.00000]
Explanation: The average value of nodes on level 0 is 3, on level 1 is 14.5, and on level 2 is 11.
Hence return [3, 14.5, 11].

Example 2:

Input: root = [3,9,20,15,7]
Output:
 [3.00000,14.50000,11.00000]

Constraints:

  • The number of nodes in the tree is in the range [1, 104].

  • -231 <= Node.val <= 231 - 1

解題

Runtime: 12 ms, faster than 68.93%

Memory Usage: 6.7 MB, less than 54.12%

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func averageOfLevels(root *TreeNode) []float64 {
    nodeCount:= make(map[int]int)
    value:= make(map[int]int)
    maxIndex:= 0
    
    var helper func(*TreeNode, int)
    helper = func(root *TreeNode, index int) {
        if root == nil {
            return
        }
        
        nodeCount[index]++
        value[index] += root.Val
        if index > maxIndex { maxIndex = index }
        
        helper(root.Left, index+1)
        helper(root.Right, index+1)
    }
    
    helper(root, 0)
    
    ans := make([]float64, 0)
    for i:=0; i<=maxIndex; i++ {
        ans = append(ans, float64(value[i]) / float64(nodeCount[i]))
    }
    
    return ans
}

Last updated