1. 题目
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.
输入:3/ \9 20/ \15 7
输出: [3, 14.5, 11]
解释:
第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].
2. 解题
- queue按层遍历,每次进入循环记录队列长度n
class Solution {
public:vector<double> averageOfLevels(TreeNode* root) {if(root == NULL)return {};vector<double> ans;int Num, n;long lvsum;queue<TreeNode*> q;q.push(root);while(!q.empty()){lvsum = 0;n = Num = q.size();while(Num--){lvsum += q.front()->val;if(q.front()->left)q.push(q.front()->left);if(q.front()->right)q.push(q.front()->right);q.pop();}ans.push_back(double(lvsum)/n);}return ans;}
};