给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。

示例

示例 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 都没有子节点,队列为空结束循环

  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. const res = []
  15. const q = [root]
  16. while(q.length) {
  17. const len = q.length
  18. let sum = 0
  19. for (let i = 0; i < len; i++) {
  20. const item = q.shift()
  21. sum += item.val
  22. if (item.left) {
  23. q.push(item.left)
  24. }
  25. if (item.right) {
  26. q.push(item.right)
  27. }
  28. }
  29. res.push(sum / len)
  30. }
  31. return res
  32. };

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/average-of-levels-in-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。