本文共 1181 字,大约阅读时间需要 3 分钟。
给定一个非空二叉树,返回一个由每层节点平均值组成的数组。
为了解决这个问题,我们需要遍历二叉树的每一层,并计算每层的节点平均值。以下是实现该方法的详细步骤:
#include#include using namespace std;vector averageOfLevels(TreeNode* root) { vector cnt; vector sum; dfs(root, 0, cnt, sum); vector ave; for (int i = 0; i < sum.size(); ++i) { ave.push_back(sum[i] / cnt[i]); } return ave;}void dfs(TreeNode* root, int lev, vector & cnt, vector & sum) { if (root == nullptr) return; if (lev < sum.size()) { sum[lev] += root->val; cnt[lev] += 1; } else { sum.push_back(static_cast (root->val)); cnt.push_back(1); } dfs(root->left, lev + 1, cnt, sum); dfs(root->right, lev + 1, cnt, sum);}
cnt
和sum
,分别记录每层的节点数和总和。sum
和cnt
。如果层数超过当前sum
的大小,扩展sum
和cnt
,并添加新的层的值。sum
和cnt
,计算每层的平均值并存储到ave
向量中,最终返回这个向量。该方法确保了每层节点的平均值被正确计算,并且代码高效且易于理解。
转载地址:http://rphdz.baihongyu.com/