考层序遍历。
class Solution {
public:
vector<double> averageOfLevels(TreeNode* root) {
vector<double> result;
queue<TreeNode*> ele;
ele.push(root);
while (!ele.empty())
{
int l = ele.size();
long count = 0;
int n = 0;
for (int i = 0; i < l; i++)
{
TreeNode* tmp = ele.front();
if(tmp-> left !=NULL) ele.push(tmp->left);
if (tmp->right != NULL) ele.push(tmp->right);
count = count + tmp->val;
n++;
ele.pop();
}
result.push_back(double(count) / double(n));
}
return result;
}
};
1.注意进队之前判断左右子树是不是空;
2.注意边界,count可能会超过int的界,因此使用long。