题目:二叉树的层平均值
要求:给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。
示例:
输入:
3
/
9 20
/
15 7
输出: [3, 14.5, 11]
解释:
第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11]。
思路:首先将二叉树每层的总和sum算出来,并将每层的结点个数size算出来,然后计算sum/size;最后将每层计算的结果依次尾插入到数组中。
代码实现如下:
/**
* 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) {
vector<double> res;
if(root == nullptr){
return res;
}
queue<TreeNode*> qu;
qu.push(root);
while(qu.size()){
int num = qu.size();
long temp = 0;
for(int i = 0;i < num; i++){
TreeNode* node = qu.front();
qu.pop();
if(node->left){
qu.push(node->left);
}
if(node->right){
qu.push(node->right);
}
temp += node->val;
}
res.push_back((double)temp/num);
}
return res;
}
};