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:
The range of node’s value is in the range of 32-bit signed integer.

本题题意很简单,直接广度优先遍历BFS即可

代码如下:

#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <string>
#include <climits>
#include <algorithm>
#include <sstream>
#include <functional>
#include <bitset>
#include <numeric>
#include <cmath>
#include <regex>

using namespace std;


/*
struct TreeNode 
{
     int val;
     TreeNode *left;
     TreeNode *right;
     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
*/

class Solution 
{
public:
    vector<double> averageOfLevels(TreeNode* root) 
    {
        vector<double> res;
        if (root == NULL)
            return res;
        queue<TreeNode*> que;
        que.push(root);
        while (que.empty() == false)
        {
            double sum = 0;
            int size = que.size();
            for (int i = 0; i < size; i++)
            {
                TreeNode* one = que.front();
                que.pop();
                sum += one->val;
                if (one->left != NULL)
                    que.push(one->left);
                if (one->right != NULL)
                    que.push(one->right);
            }
            res.push_back(sum / size);
        }
        return res;
    }
};