Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.
Example 1:
Input: 3 / 9 20 / 15 7 Output: [3, 14.5, 11] Explanation: The average value of nodes on level 0 is 3, on level 1 is 14.5, and on level 2 is 11. Hence return [3, 14.5, 11].
Note:
- The range of node's value is in the range of 32-bit signed integer.
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<double> averageOfLevels(TreeNode* root) { vector<double> v; queue<TreeNode*>q; if (root == nullptr) { return v; } else { q.push(root); } while (!q.empty()) { int m = q.size(); double num = 0; for (int i = 0; i < m; ++i) { TreeNode* u = q.front(); if (u->left != nullptr) q.push(u->left); if (u->right != nullptr) q.push(u->right); q.pop(); num += u->val; } v.push_back(num/m); } return v; } };