输入:一棵二叉树的根节点 root。
要求:返回一个数组,表示每一层所有节点值的平均数(double)。
输出:vector<double>,包含从上到下每一层的平均值。
思路:层序遍历,外加每层遍历的时候求下平均值即可。
不过有意思的是,单纯的层序遍历题(102. 二叉树的层序遍历)难度给到中等,这题还加了点反而只给了简单。
复杂度:
时间复杂度:O(n)
空间复杂度:O(n)
class Solution {
public:
vector<double> averageOfLevels(TreeNode* root) {
vector<double> ans;
if (!root) return ans;
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
int n = q.size();
long long sum = 0;
for (int i = 0; i < n; i++) {
TreeNode* node = q.front();
q.pop();
sum += node->val;
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
ans.push_back((double)sum / n);
}
return ans;
}
};
378

被折叠的 条评论
为什么被折叠?



