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].
利用bfs解决该问题
/**
* 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*> q;
vector<double> res;
q.push(root);
int i =0;
while(!q.empty())
{
double sum = 0;
int s = q.size();
for(int i = 0;i<s;i++)
{
sum+=q.front()->val;
if(q.front()->left)
q.push(q.front()->left);
if(q.front()->right)
q.push(q.front()->right);
q.pop();
}
double t = sum/s;
res.push_back(t);
}
return res;
}
};