void insert(int key)
{
insertRec(key, root);
}
void insertRec(int key, Node *current)
{
if(current==NULL)
current = new Node(key);
else if(key <= current->value)
insertRec(key, current->leftChild);
else
insertRec(key, current->rightChild);
}
Wie kommt das nicht funktioniert?Binary Tree rekursive Einfügemethode funktioniert nicht
In der Insert-Funktion werden der Schlüsselwert und das Stammverzeichnis der Struktur an insertRec übergeben. Wenn der Knoten null ist, erstellen Sie einen neuen Knoten und legen Sie ihn auf den Schlüsselwert fest. Andernfalls entweder rekursiv nach links oder rechts gehen, bis der Knoten einen Nullpunkt erreicht und dort einen neuen Knoten einfügen.
[Finden Sie einen guten Anfänger Buch] (http://stackoverflow.com/questions/ 388242/the-definitive-c-book-guide-and-list) und lesen Sie über Passing-Argumente * durch Verweis *. –
Das Zuweisen einer lokalen Variable "current" ist nicht dasselbe wie das Einfügen des Knotens. Es ändert nur die lokale Variable, nicht * worauf sich die Variable bezieht *, was Sie wollen. Für zukünftige Referenz, versuchen Sie zu vermeiden, nur Dinge zu sagen "funktioniert nicht". Beschreibe * wie * dein Code nicht funktioniert. – Zong
'void insertRec (int key, Node * & current)' sollte den Trick machen. –