C++
方法类似于进行二叉树的层遍历
/*** 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 *> q;q.push(root);while(!q.empty()){int size = q.size();double currentSum = 0;for(int i = 0; i < size; i++){TreeNode* node = q.front();currentSum += node->val;q.pop();if(node->left) q.push(node->left);if(node->right) q.push(node->right);}ret.push_back(currentSum/size);}return ret;}};
