leetcode 637. 二叉树的层平均值(Average of Levels in Binary Tree)
题目描述:
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.
示例 1:
输入:
3
/ \
9 20
/ \
15 7
输出: [3, 14.5, 11]
解释:
第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].
注意:
- 节点值的范围在32位有符号整数范围内。
解法:
/**
* 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;
vector<TreeNode*> cur;
vector<TreeNode*> nxt;
if(root){
cur.push_back(root);
while(!cur.empty()){
nxt.clear();
double sum_val = 0;
for(TreeNode* node : cur){
sum_val += node->val;
if(node->left){
nxt.push_back(node->left);
}
if(node->right){
nxt.push_back(node->right);
}
}
int sz = cur.size();
res.push_back(sum_val/sz);
cur = nxt;
}
}
return res;
}
};

浙公网安备 33010602011771号