给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。
示例
示例 1:
输入:
3
/ \
9 20
/ \
15 7
输出:[3, 14.5, 11]
解释:
第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。
题解
创建一个队列,先放入 root
q = [3] res =[]
取出队列长度的个数 1,求出平均数 3 计入。再判断当前节点的左右子节点,放入队列
q = [9, 20] res = [3]
同样的,取出 2 个数,求出平均数 14.5计入。在分别判断每个节点的左右子节点,放入队列。由于节点 9 没有子节点,所以当前队列只有节点 20 的子节点
q = [15, 7] res = [3, 14.5]
最后得到第三个平均数 11,节点 15 和节点 7 都没有子节点,队列为空结束循环
/**
* 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 res = []
const q = [root]
while(q.length) {
const len = q.length
let sum = 0
for (let i = 0; i < len; i++) {
const item = q.shift()
sum += item.val
if (item.left) {
q.push(item.left)
}
if (item.right) {
q.push(item.right)
}
}
res.push(sum / len)
}
return res
};
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/average-of-levels-in-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。