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

    示例 1:
    image.png

    输入: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. /**
    2. * Definition for a binary tree node.
    3. * function TreeNode(val, left, right) {
    4. * this.val = (val===undefined ? 0 : val)
    5. * this.left = (left===undefined ? null : left)
    6. * this.right = (right===undefined ? null : right)
    7. * }
    8. */
    9. /**
    10. * @param {TreeNode} root
    11. * @return {number[]}
    12. */
    13. var averageOfLevels = function (root) {
    14. //二叉树的层序遍历
    15. let res = [];
    16. if (root == null) return res;
    17. let queue = [root];
    18. while (queue.length) {
    19. let size = queue.length;
    20. let sum = 0;
    21. for (let i = 0; i < size; i++) {
    22. let cur = queue.shift();
    23. if (cur.left) queue.push(cur.left);
    24. if (cur.right) queue.push(cur.right);
    25. sum += cur.val;
    26. }
    27. res.push(sum / size);
    28. }
    29. return res;
    30. };

    image.png