123456789101112131415
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。示例:输入: 3 / \ 9 20 / \ 15 7输出:[3, 14.5, 11]解释:第 0 层的平均值是 3 ,第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。提示:节点值的范围在32位有符号整数范围内。
123456789101112131415161718192021222324252627282930313233343536373839404142
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */class Solution {public: vector<double> averageOfLevels(TreeNode* root) { vector<double> ret; //定义一个容器 queue<TreeNode* > que; //定义一个队列 if (root != NULL) que.push(root); while (!que.empty()) { int count = que.size(); double sum = 0; for (int i = 0;i < count;++i) { TreeNode *node = que.front(); //node指向队列的首节点 que.pop(); sum += node->val; if (node->left != NULL) que.push(node->left); if (node->right != NULL) que.push(node->right); } ret.push_back(sum / count); } return ret; }};