0637. 二叉树的层平均值【简单】
1. 📝 题目描述
给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10^-5 以内的答案可以被接受。
示例 1:

txt
输入: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]。1
2
3
4
2
3
4
示例 2:

txt
输入:root = [3,9,20,15,7]
输出:[3.00000,14.50000,11.00000]1
2
2
提示:
- 树中节点数量在
[1, 10^4]范围内 -2^31 <= Node.val <= 2^31 - 1
2. 🎯 s.1 - 暴力解法
js
/**
* 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) {
if (!root) return []
const result = []
const queue = [root]
while (queue.length > 0) {
const levelSize = queue.length
let levelSum = 0
// 处理当前层的所有节点
for (let i = 0; i < levelSize; i++) {
const node = queue.shift()
levelSum += node.val
// 将下一层的节点加入队列
if (node.left) queue.push(node.left)
if (node.right) queue.push(node.right)
}
// 计算当前层的平均值
result.push(levelSum / levelSize)
}
return result
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
- 时间复杂度:
,其中 n 是二叉树中的节点数量,每个节点都需要访问一次 - 空间复杂度:
,其中 w 是二叉树的最大宽度,队列中最多存储一层的所有节点