void BST::insert(string word)
{
insert(buildWord(word),root);
}
//Above is the gateway insertion function that calls the function below
//in order to build the Node, then passes the Node into the insert function
//below that
Node* BST::buildWord(string word)
{
Node* newWord = new Node;
newWord->left = NULL;
newWord->right = NULL;
newWord->word = normalizeString(word);
return newWord;
}
//The normalizeString() returns a lowercase string, no problems there
void BST::insert(Node* newWord,Node* wordPntr)
{
if(wordPntr == NULL)
{
cout << "wordPntr is NULL" << endl;
wordPntr = newWord;
cout << wordPntr->word << endl;
}
else if(newWord->word.compare(wordPntr->word) < 0)
{
cout << "word alphabetized before" << endl;
insert(newWord,wordPntr->left);
}
else if(newWord->word.compare(wordPntr->word) > 0)
{
cout << "word alphabetized after" << endl;
insert(newWord, wordPntr->right);
}
else
{
delete newWord;
}
}
だから私の問題はこれです:私はゲートウェイinsert()を外部で呼び出し(データの流入にも問題はありません)、ルートまたは最初のノード*がNULLであると通知するたびに。しかし、それは最初の挿入の前にのみ当てはまるはずです。関数が呼び出されるたびに、newWordがルートに固定されます。明確にするために:これらの関数はBSTクラスの一部であり、rootはNode*およびBST.hのプライベートメンバーです。
それは非常に明白である可能性があり、私はあまりにも長い間見つめていました。どんな助けでもいただければ幸いです。また、これは学校が割り当てたプロジェクトです。
一番