python:
class Solution:
def averageOfLevels(self, root):
"""
:type root: TreeNode
:rtype: List[float]
"""
if root is None:
return []
res = []
queue = [root]
while(queue):
sum_level = 0
l = len(queue)
for _ in range(l):
node = queue.pop(0)
sum_level += node.val
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(sum_level/l)
return res
c++:
class Solution {
public:
vector<double> averageOfLevels(TreeNode* root) {
if (root == nullptr)
return {};
vector<double> res;
queue<TreeNode*> q;
q.push(root);
while(!q.empty()){
int l = q.size();
double sum = 0.0;
for (int i=0; i<l; i++){
TreeNode* f = q.front();
q.pop();
sum += f->val;
if(f->left)
q.push(f->left);
if(f->right)
q.push(f->right);
}
res.push_back(sum/l);
}
return res;
}
};