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
解题思路:一个简单的广度优先搜索,难点在于思考广度优先搜索每一层的个数鉴定。
vector<double> averageOfLevels(TreeNode* root) { vector<double>ret; if(root==NULL)return ret; queue<TreeNode*>que; que.push(root); TreeNode* temp; while(!que.empty()) { int n = que.size(); double sum = 0; for(int i = 0;i<n;i++) { temp = que.front(); que.pop(); sum+= temp->val; if(temp->left!=NULL)que.push(temp->left); if(temp->right!=NULL)que.push(temp->right); } ret.push_back(sum/(double)n); } return ret; }