思路:这里运用递归只需要在每一次迭代时修改一下内容就可以
也就是每一次小递归中给当前深度加上cur->val
当递归结束后,每一层深度都代表这这层深度的和
然后在加数时,顺便给count数组也加一个数
最后循环就好了
说不清楚看代码吧
class Solution {
public:
vector<int> count;
void order(TreeNode* cur,vector<double>& result,int depth)
{
if(cur == nullptr)return;
if(result.size() == depth)
{
result.push_back(cur->val);
count.push_back(1);
}
else
{
result[depth] += cur->val;
count[depth]++;
}
order(cur->left,result,depth + 1);
order(cur->right,result,depth + 1);
}
vector<double> averageOfLevels(TreeNode* root)
{
vector<double>result;
order(root,result,0);
int j = 0;
for(int i : count)
{
result[j] /= i;
j++;
}
return result;
}
};