给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。

    示例 1:

    637二叉树的层平均值 - 图1

    1. 输入:root = [3,9,20,null,null,15,7]
    2. 输出:[3.00000,14.50000,11.00000]
    3. 解释:第 0 层的平均值为 3,第 1 层的平均值为 14.5,第 2 层的平均值为 11
    4. 因此返回 [3, 14.5, 11]

    示例 2:

    637二叉树的层平均值 - 图2

    输入:root = [3,9,20,15,7]
    输出:[3.00000,14.50000,11.00000]
    

    提示:

    • 树中节点数量在 [1, 104] 范围内
    • -231 <= Node.val <= 231 - 1
    class Solution {
    public:
        //同样对层序得到的tem进行求和操作得到答案
        vector<double> averageOfLevels(TreeNode* root) {
            queue<TreeNode*> q;
            vector<double> ans;
            if(root!=nullptr) q.push(root);
            while (!q.empty()) {
                int len=q.size();
                vector<int> tem;
                for (int i = 0; i < len; i++) {
                    auto node= q.front();
                    q.pop();
                    tem.push_back(node->val);
                    if(node->left) q.push(node->left);
                    if(node->right) q.push(node->right);
                }
                double avr=0;
                int num=tem.size();
                for (auto it:tem) avr+=it;
                avr=(1.0*avr)/num;
                ans.push_back(avr);
            }
            return ans;
        }
    };