1、题目:
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].
2、解答:我个人感觉广度优先遍历的思路容易解决此题.
3、C++代码:
class Solution {
public:
vector<double> averageOfLevels(TreeNode* root) {
vector<double> result;
queue<TreeNode *> q;
q.push(root);
while(!q.empty()){
long sum = 0;
int len = q.size();
for(int i=0;i<len;i++){
TreeNode *temp = q.front();
q.pop();
if(temp->left)
q.push(temp->left);
if(temp->right)
q.push(temp->right);sum += temp->val;
}
result.push_back((double)sum/len);
}
return result;
}
};
python代码:
class Solution:
def averageOfLevels(self, root):
"""
:type root: TreeNode
:rtype: List[float]
"""
result = []
if root == None:
return result
q = [root]
while q:
q1 = []
sum = 0
len = 0
while q:
temp = q.pop()
if temp.left:
q1.append(temp.left)
if temp.right:
q1.append(temp.right)
sum += temp.val
len += 1
result.append(sum*1.0/len)
q = list(q1)
return result