难度简单224
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。
示例 1:
输入: 3 / \ 9 20 / \ 15 7 输出:[3, 14.5, 11] 解释: 第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。
提示:
- 节点值的范围在32位有符号整数范围内。
这题还是层序遍历,因此我就一块写了,顺便训练自己对层序遍历掌握的熟练程度。
基本上还是用之前的模板,需要注意的是这里的除法运算,因此需要在之前将sum 设置double类型,如果不是的话肯定是不能通过的,总之就是数据类型的注意点。
还算很顺利的,加油!再接再厉!
/**
* 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*> queue;
vector<double> res;
if (root != NULL){
queue.push(root);
}
while(!queue.empty()){
int size = queue.size();
double sum = 0;
for(int i = 0; i < size; i++){
TreeNode* node = queue.front();
queue.pop();
sum += node->val;
if(node->left){
queue.push(node->left);
}
if(node->right){
queue.push(node->right);
}
}
res.push_back(sum / size);
}
return res;
}
};