ツリーのノード内のいくつかのデータの平均を見つける関数を作成しようとしています。問題は、すべてのノードに2つのデータが含まれており、他のBSTとは異なり、ノードが構築されるプライマリデータは文字列であるということです。ツリー内の数値ベースの要素の平均を見つけることは私にとって問題ではありませんが、各ノードには文字列(人の名前)と一見乱数(その人の体重)が含まれているため、ツリーは実際には完全です混乱し、私はそれに対処する方法がわかりません。これが私のノードなので、私の意味がわかります。
struct Node {
string name;
double weight;
Node* leftChild;
Node* rightChild;
};
Node* root;
多くの段階の1つでの関数は次のとおりです。
// 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);
}
ツリーをトラバースするために、再帰を試みましたが、すべてをカウントして合計するたびに、何かが厄介になり、毎回リターン(合計/カウント)を実行することになります。また、ツリーをトラバースして配列に重みを追加することで配列の実装を試しましたが、戻り値と再帰が干渉するなどの理由で機能しませんでした。
そして、誰かが尋ねようとしていることを私が知っているという理由だけで、はい、これは学校の割り当てのためです。ただし、これはクラス内の18の関数のうちの1つであるため、誰かにこれを実行するように依頼しているわけではありません。私はこの1つの機能を何時間も使用していて、一晩中起きていて、脳が痛いので、どんな助けでも大歓迎です!