给定一个非空二叉树的根节点 root
, 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5
以内的答案可以被接受。
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:[3.00000,14.50000,11.00000]
思路:利用队列实现对二叉树的层序遍历,再把每一层的节点值相加,
返回层和的平均值;
代码:
class Solution {
public:
vector<double> averageOfLevels(TreeNode* root) {
queue<TreeNode*> que;
if(root != NULL)que.push(root);
vector<double>result;//存放结果
while(!que.empty()){
int size =que.size();
double sum =0;//层和
for(int i = 0;i < size;i++){
TreeNode* node =que.front();
que.pop();
sum+=node->val;
if(node->left) que.push(node->left);
if(node->right) que.push(node->right);
}
result.push_back(sum/size);
}
return result;
}
};