天津公司建设网站,聊天软件开发需要多少钱,凯里网站建设go007,中国知名公司给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。
示例 1#xff1a;
输入#xff1a; 3/ \9 20/ \15 7输出#xff1a;[3, 14.5, 11] 解释#xff1a; 第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。
提示#xff1a;
…给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。
示例 1
输入 3/ \9 20/ \15 7输出[3, 14.5, 11] 解释 第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。
提示
节点值的范围在32位有符号整数范围内。代码如下:
/*** 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:vectordouble averageOfLevels(TreeNode* root) {auto cnt vectorint();auto sum vectordouble();dfs(root,0,cnt,sum);auto ave vectordouble();for (int i 0;isum.size();i){ave.push_back(sum[i]/cnt[i]);}return ave;}void dfs(TreeNode *root,int lev,vectorintcnt,vectordoublesum){if (rootnullptr) return ;if (lev sum.size()){sum[lev]root-val;cnt[lev]1;}else {sum.push_back(1.0*root-val);cnt.push_back(1);}dfs(root-left,lev1,cnt,sum);dfs(root-right,lev1,cnt,sum);}
};