直接可以暴力解出来,先统计一颗数的层序遍历,然后统计每层的均值。
/**
* 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) {
if(root==NULL){
vector<double> temp;
return temp;
}
queue<TreeNode*> nodes;
queue<int> levels;
vector<vector<double>> result;
nodes.push(root);
levels.push(0);
while(!nodes.empty())
{
if(nodes.front()->left!=NULL){
nodes.push(nodes.front()->left);
levels.push(levels.front()+1);
}
if(nodes.front()->right!=NULL){
nodes.push(nodes.front()->right);
levels.push(levels.front()+1);
}
if(result.size()<=levels.front()){
vector<double> temp;
temp.push_back(nodes.front()->val);
result.push_back(temp);
}
else
result[levels.front()].push_back(nodes.front()->val);
nodes.pop();
levels.pop();
}
vector<double> finalResult(result.size(), 0);
for(int i=0;i<result.size();i++){
for(int j=0;j<result[i].size();j++)
finalResult[i] += result[i][j];
finalResult[i] /= result[i].size();
}
return finalResult;
}
};