Skip to content

力扣链接: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;
}