查找二叉树 c++ 的平均值
Find average value of binary tree c++
所以我正在尝试编写一个递归函数来返回 c++ 中二叉树值的平均值。这是我所拥有的,这不起作用:
double avg(bNode* root)
{
if(!root) return 0;
int sum = avg(root->left) + avg(root->right) + root->value;
if(root->left && root->right) return sum/3;
else if(!root->left && !root->right) return sum;
else return sum/2;
}
感谢您的帮助。
这是一个非常简单的例子,应该说明为什么你计算的不是平均值:
10
/
4 12
20
在"12"节点,平均值将为(12 + 20) / 2 = 16
。
然后在10
节点上,平均值将(4 + 10 + 16) / 3 = 10
。
但是,平均值确实11.5
.
问题是平均值的平均值不等于一个大的正确平均值。 在每个级别上,您必须将平均值乘以用于计算它的节点数(即总和),然后再将其用于下一个平均值计算。
一种更简单的方法可能是计算总和,然后除以树中的节点数。
一种技术的一些伪代码是:
class accumulator
{
int sum = 0;
int count = 0;
// implement the obvious operator+
};
accumulator avg(bNode* root)
{
if(!root) return <empty accumulator>
return <recursive children> + <self>;
}
int main()
{
accumulator acc = avg(root);
// ..calculate average..
}
相关文章:
- 计算数组c++的平均值
- 计算平均值,不包括上次得分
- 彩色图像的卤化物处理平均值
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 按平均值替换数组中的元素
- 如何返回多个矢量对象的平均值?C++
- 将随机生成的数字添加到数组 + 对这些数组求平均值
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- 制作具有平均值的随机数生成器
- C++ 函数,用于查找传入的 N 个数字的平均值、总和、最小值和最大值
- 如何使用对象制作分数列表并获得平均值
- 浮点格式数组的平均值
- 在二叉搜索树C++中计算平均值
- C 复合赋值运算符 ^= 平均值
- 我们如何并行运行算法的 n 个实例并以有效的方式计算结果函数的平均值?
- 我可以计算多线程数的平均值吗?
- 计算另一个图像像素满足条件的像素值的平均值
- 做一个unordered_multimap键的平均值是更好的方法吗?
- 使用数学地板找到平均值
- 从文件中读取成绩并将平均值输出到另一个文件C++