leetcode 637. 二叉树的层平均值
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。
示例 1:
输入:
3
/ \
9 20
/ \
15 7
输出:[3, 14.5, 11]
解释:
第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。
提示:
节点值的范围在32位有符号整数范围内。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/average-of-levels-in-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
层序遍历,每一层都求平均值,并放入list。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public List<Double> averageOfLevels(TreeNode root) { List<Double> list = new ArrayList<>(); if (root == null) { return list; } Queue<TreeNode> a = new ArrayDeque<>(); Queue<TreeNode> b = new ArrayDeque<>(); a.add(root); while (!a.isEmpty() ) { double sum = 0D; int count = 0; while (!a.isEmpty()) { TreeNode poll = a.poll(); sum += poll.val; count++; if (poll.left != null) { b.add(poll.left); } if (poll.right != null) { b.add(poll.right); } } a = b; b = new ArrayDeque<>(); list.add(sum / count); } return list; } }