# 题目描述

Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.

Example 1:

`Input:​    3   / \  9  20    /  \   15   7​Output: [3, 14.5, 11]​Explanation:​The average value of nodes on level 0 is 3,  on level 1 is 14.5, and on level 2 is 11. Hence return [3, 14.5, 11].`

Note:

1. The range of node's value is in the range of 32-bit signed integer.

# Java

## 代码

`class Solution {    public List<Double> averageOfLevels(TreeNode root) {        List<List<Integer>> res = new ArrayList<>();        Queue<TreeNode> q = new LinkedList<>();        if (root != null) q.offer(root);        while (!q.isEmpty()) {            int size = q.size();            List<Integer> level = new LinkedList<>();            for (int i = 0; i < size; i++) {                TreeNode curr = q.poll();                level.add(curr.val);                if (curr.left != null) q.offer(curr.left);                if (curr.right != null) q.offer(curr.right);            }            res.add(level);        }        List<Double> result = new ArrayList<>();        for (List<Integer> list : res) {            result.add(list.stream().mapToInt(i -> i).average().getAsDouble());        }        return result;    }}`