题目
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.
示例 1:
输入:
3
/ 9 20
/ 15 7
输出: [3, 14.5, 11]
解释:
第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].
代码
class Solution {
public:
vector<double> averageOfLevels(TreeNode* root) {
vector<double> vec;
queue<TreeNode*> que;
que.push(root);
while(!que.empty()) {
double sum = 0;
int sum_size = que.size();
for(int i = 0; i < sum_size; i++) {
TreeNode* t = que.front();
que.pop();
if(t->left != NULL) {
que.push(t->left);
}
if(t->right != NULL) {
que.push(t->right);
}
sum += t->val;
}
vec.push_back(sum / sum_size);
}
return vec;
}
};
笔记:将queue的头元素取出,如果左右子树不为null,两数相加。然后头元素执行pop(),算出平均值。
原文地址:https://www.cnblogs.com/kloseer/p/10409762.html
时间: 2024-11-08 15:35:21