菜鸟篇 ctrl+c ctrl+v (仅读代码,写自己的见解)
//从该二叉树中我们需要提取的是
//1、二叉树每一层的个数
//2、二叉树每一层的总和
class Solution {
public:
vector<double> averageOfLevels(TreeNode* root) {
auto counts = vector<int>();
auto sums = vector<double>();
dfs(root, 0, counts, sums);
auto averages = vector<double>();
int size = sums.size();
for (int i = 0; i < size; i++) {
averages.push_back(sums[i] / counts[i]);
}
return averages;
}
//深度优先搜索方法
//一共需要四个参数
//1、二叉树
//2、层数(用于循环遍历)
//3、存放层数的个数
//4、存放层数的总和
class Solution {
public:
vector<double> averageOfLevels(TreeNode* root) {
auto counts = vector<int>();
auto sums = vector<double>();
dfs(root, 0, counts, sums);
auto averages = vector<double>();
int size = sums.size();
for (int i = 0; i < size; i++)
{
averages.push_back(sums[i] / counts[i]);
}
return averages;
}
//深度优先搜索方法
//一共需要四个参数
//1、二叉树
//2、层数(用于循环遍历)
//3、存放层数的个数
//4、存放层数的总和
void dfs(TreeNode* root, int level, vector<int> &counts, vector<double> &sums) {
if (root == nullptr) {
return;
}//限制
if (level < sums.size()) { //限制
sums[level] += root->val;
counts[level] += 1;
} else {
sums.push_back(1.0 * root->val);
counts.push_back(1);
}
dfs(root->left, level + 1, counts, sums);
dfs(root->right, level + 1, counts, sums);
}
};
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/average-of-levels-in-binary-tree/solution/er-cha-shu-de-ceng-ping-jun-zhi-by-leetcode-soluti/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。