leetcode 637. 二叉树的层平均值(BFS)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kirito0104/article/details/81939868

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

示例 1:

输入:
    3
   / \
  9  20
    /  \
   15   7
输出: [3, 14.5, 11]
解释:
第0层的平均值是 3,  第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].

注意:节点值的范围在32位有符号整数范围内。

思路

在基础BFS的基础上算AVG.

code

/**
 * Definition for a binary tree node.
 * 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) {
        queue<TreeNode*> q;
        vector<double> avg;
        vector<vector<double>> all;
        if(!root)
            return avg;
        q.push(root);
        while(!q.empty()){
            int len = q.size();
            vector<double> aaa;
            for(int i=0;i<len;++i){
                TreeNode *p=q.front();q.pop();
                aaa.push_back(p->val);
                if(p->left)  q.push(p->left);
                if(p->right) q.push(p->right);  
            }
            all.push_back(aaa);
        }
        
        for(int i=0;i<all.size();++i){
            double sum = accumulate(begin(all[i]), end(all[i]), 0.0);
	        double mean =  sum / all[i].size();
            avg.push_back(mean);
        }
        return avg;
    }
};

猜你喜欢

转载自blog.csdn.net/kirito0104/article/details/81939868