序
本文次要记录一下leetcode树之二叉树的层平均值
题目
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。 示例 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著作权归领扣网络所有。商业转载请分割官网受权,非商业转载请注明出处。
题解
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public List<Double> averageOfLevels(TreeNode root) { if (root == null) { return Collections.emptyList(); } List<Double> result = new ArrayList<Double>(); Queue queue = new LinkedList(); queue.offer(root); while(!queue.isEmpty()) { int size = queue.size(); double sum = 0; for(int i=0; i< size; i++){ TreeNode node = (TreeNode)queue.poll(); sum += node.val; if (node.left != null) { queue.offer(node.left); } if (node.right !=null) { queue.offer(node.right); } } result.add(sum*1.0/size); } return result; }}
小结
这里借助队列进行档次遍历,每次先记录queue的size,而后按size来poll,取出元素累加sum,而后把不为null的node.left及node.right放入到queue中,最初计算sum/size放入到result中。
doc
- average-of-levels-in-binary-tree