Ich habe den folgenden Algorithmus mit Rekursion versucht, aber die Knoten werden nicht an den Baum angehängt. Bitte sag mir, was los ist.Wie füge ich einen Knoten in BST hinzu?
void search_add(struct node *t)
{
if(t==NULL)
{
t = newNode(temp->key);
return;
}
else if(t->key>temp->key)
{
search_add(t->right);
}
else if (t->key<temp->key)
{
search_add(t->left);
}
}
void insert(struct node *node, int key)
{
temp = newNode(key);
search_add(node);
}
int main(void)
{
root = newNode(50);
insert(root,30);
return 0;
}
't = newNode (temp-> -Taste);' ändert sich nur die lokale Kopie übergeben, die dann vergessen wird und der Anrufer 't-> right' oder' t-> left' bleibt NULL '. –
Es gibt * Tausende * von Duplikaten dieses Problems auf dieser Website. Leider wird der Fehler im Allgemeinen von Anfängern gemacht und die Titel/Texte der Fragen sind so unterschiedlich, dass sie schwer zu finden sind. 't = newNode (temp-> key);' * * * * * * * * * * * * * * * * * * * * * nicht * * * Es ist eine lokale Variable, soweit es die Funktion betrifft. All dies führt letztlich dazu, dass Speicher verloren geht. [Beispiel duplizieren hier] (https://stackoverflow.com/questions/13188313/why-is-my-bst-root-pointer-changing-for-some-unknown-reason). – WhozCraig
Willkommen bei StackOverflow. Bitte nehmen Sie die [Tour], lernen, gute Fragen zu stellen stackoverflow.com/help/how-to-ask, machen eine [MCVE]. Wenn Sie Hilfe mit Debugging-Code suchen, siehe https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – Yunnosch