每日力扣-树-二叉树的层平均值

95 阅读1分钟

给定一个非空二叉树, 返回一个由每层节点平均值组成的数组

解题思路:很经典的层序遍历,建立个queue来存放每一层的节点

class Solution {
public:
    vector<double> averageOfLevels(TreeNode* root) {
        auto avg = vector<double>();
        auto q = queue<TreeNode*>();
        q.push(root);
        while(!q.empty())
        {
            double sum = 0;
            int n = q.size();
            for(int i = 0 ; i < n ; i++)
            {
                auto node = q.front();
                q.pop();
                sum += node->val;
                auto left = node->left , right = node->right;
                if(left != NULL) q.push(left);
                if(right != NULL) q.push(right);
            }
            avg.emplace_back(sum/n);
        }
        return avg;
    }
};