Average of Levels in Binary Tree
Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array. Example 1:
Input:
3 / \ 9 20 / \ 15 7
Output: [3, 14.5, 11] Explanation: The average value of nodes on level 0 is 3, on level 1 is 14.5, and on level 2 is 11. Hence return [3, 14.5, 11].
Solution: Using Level Order Traversal
Note: Use double as the type of sum in case there's overflow
vector<double> averageOfLevels(TreeNode* root) {
vector<double> ans;
queue<TreeNode *> q;
q.push(root);
while (!q.empty()) {
int size = q.size();
double sum = 0;
for (int i=0; i<size; i++) {
TreeNode *node = q.front();
q.pop();
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
sum += node->val;
}
ans.push_back(sum/size);
}
return ans;
}