题目
示例 1:
输入: 3 / \ 9 20 / \ 15 7 输出:[3, 14.5, 11] 解释: 第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。
提示:
- 节点值的范围在32位有符号整数范围内。
解题
方法一:BFS
python解法
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def averageOfLevels(self, root: TreeNode) -> List[float]: if not root: return [] queue = [root] res = [] while queue: l = len(queue) tmp = [] for _ in range(l): cur = queue.pop(0) tmp.append(cur.val) left,right = cur.left,cur.right if left: queue.append(left) if right: queue.append(right) res.append(sum(tmp)/len(tmp)) ## 新增的地方 return res
c++解法
class Solution { public: vector<double> averageOfLevels(TreeNode* root) { if(!root) return {}; vector<double> res; queue<TreeNode*> queue; queue.push(root); while(!queue.empty()){ int l=queue.size(); double tmp=0; for(int i=0;i<l;i++){ TreeNode* cur=queue.front(); queue.pop(); tmp+=cur->val; if(cur->left){ queue.push(cur->left); } if(cur->right){ queue.push(cur->right); } } tmp/=l; res.push_back(tmp); } return res; } };