我正在尝试创建一个函数来查找树节点内某些数据的平均值。问题是,每个节点都包含两条数据,并且与其他 BST 不同,构建它的主要数据是一个字符串。在树中找到基于数字的元素的平均值对我来说不是问题,但是由于每个节点都包含一个字符串(一个人的名字)和一个看似随机的数字(这个人的权重),所以这棵树实际上是完整的混乱,我不知道如何处理它。这是我的节点,所以你明白我的意思:
struct Node {
string name;
double weight;
Node* leftChild;
Node* rightChild;
};
Node* root;
这是其多个阶段之一的功能:
// This isn't what I'm actually using so don't jump to conclusions
double nameTree::averageWeight(double total, double total, int count) const
{
if (parent != NULL)
{ //nonsense, nonsense
averageWeight(parent->leftChild, total, count);
averageWeight(parent->rightChild, total, count);
count++;
total = total + parent->weight;
return total;
}
return (total / count);
}
为了遍历这棵树,我尝试了一些递归,但是每次我设法对所有内容进行计数和总计时,都会出现一些问题,并且每次都会执行 return(total/count) 。我还尝试通过遍历树并将权重添加到数组来实现数组,但这不起作用,因为返回和递归受到干扰,或者其他什么。
就因为我知道有人会问,是的,这是为了学校作业。但是,这是一个类中的 18 个函数中的一个,所以我并不要求任何人为我做这件事。我已经使用这个功能几个小时了,我整晚都没有睡,我的大脑很痛,所以任何帮助都将不胜感激!