力扣链接:637.二叉树的层平均值
难度:⭐
解题关键词:二叉树
、队列
、层序遍历
解题思路:使用层序遍历二叉树,然后将每一层的元素算出平均值。
typescript
function averageOfLevels(root: TreeNode | null): number[] {
// 如果 root 为空,直接返回
if (root === null) return [];
// 队列
const queue: TreeNode[] = [root];
// 结果
const result = [];
// 当队列不为空的时候
while (queue.length) {
// 将当前层的元素个数记录下来,下面进行 while
let size = queue.length;
// 存放当前层级的 node 的 value 值
const curLayerNodeValues: number[] = [];
while (size--) {
// 将队列头部 node 拿出来
const node = queue.shift();
// 加到当前层级 value 数组中
curLayerNodeValues.push(node.val);
// 处理左节点
if (node.left) {
queue.push(node.left);
}
// 处理右节点
if (node.right) {
queue.push(node.right);
}
}
// 算出当前层的平均值
result.push(
curLayerNodeValues.reduce((pre, cur) => pre + cur, 0) /
curLayerNodeValues.length
);
}
return result;
}