Skip to content
On this page

637. 二叉树的层平均值

原题链接:LeetCode 637. 二叉树的层平均值

题目描述

给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。

示例 1:

**输入:**root = [3,9,20,null,null,15,7] 输出:[3.00000,14.50000,11.00000] **解释:**第 0 层的平均值为 3,第 1 层的平均值为 14.5,第 2 层的平均值为 11 。 因此返回 [3, 14.5, 11] 。

示例 2:

**输入:**root = [3,9,20,15,7] 输出:[3.00000,14.50000,11.00000]

提示:

树中节点数量在 [1, 104] 范围内
-231 <= Node.val <= 231 - 1

难度: Easy


题解代码

javascript
/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[]}
 */
var averageOfLevels = function(root) {
  const ret = []
  let levelRet = []
  const queue = []
  queue.push(root)
  while(queue.length) {
    levelRet = []
    const l = queue.length
    for (let i = 0; i < l; i ++) {
      const cur = queue.shift()
      levelRet.push(cur.val)
      if (cur.left) queue.push(cur.left)
      if (cur.right) queue.push(cur.right)
    }
    ret.push(average(levelRet))
  }
  return ret
};

function average (nums) {
  return nums.reduce((total, cur) => {
    return total + cur
  }, 0) / nums.length
}

技术文档集合