【刷题日记】二叉树-二叉树的层平均值-L637-Easy
给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。
思路
- 二叉树层序遍历,计算每层的总和后结果集中压入平均值。
学习点
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| class Solution { public: vector<double> averageOfLevels(TreeNode* root) { vector<double> res; if (!root) return res; queue<TreeNode*> qe; qe.push(root); while (!qe.empty()) { int node_num = qe.size(); double sum_of_level = 0; for (int i = 0; i < node_num; i++) { auto tmp = qe.front(); qe.pop();
sum_of_level += tmp->val;
if (tmp->left) qe.push(tmp->left); if (tmp->right) qe.push(tmp->right); } res.push_back(sum_of_level / node_num * 1.0); }
return res; } };
|