Guten Tag, stehe vor dem Problem, dass mein Programm Werte nicht richtig in einen AVL Baum einfügt. Ich sitze bereits gefühlt eine Ewigkeit dran und bin langsam extrem am verzweifeln.. Alle anderen Funktionen - Rotate, Balance etc. - sind geschrieben und sollten funktionieren, kanns halt nur nicht testen.. Bis auf die simple Ausgabe InOrder, die zeigt er mir korrekt an. Folgender Code:
Keine Compilermeldungen, Valgrind beschwert sich auch nicht (free Funktion ist vorhanden). Wo verliere ich den Knoten? Würde mich sehr freuen wenn mir jemand helfen könnte. Typedef ist übrigens auch mit drin, der Fehler muss also semantischer Natur sein..
EDIT: Hab was falsches reinkopiert, bin am ändern
EDIT: Jetzt stimmts. Mein Fehler
EDIT: Mit "Jetzt stimmts" mein ich den Code. Programm läuft immernoch nicht
Code:
AVLNode* CreateNode(int value) {
AVLNode* newNode=malloc(sizeof(AVLNode));
newNode->left=newNode->right=NULL;
newNode->height=1;
newNode->value=value;
return newNode;
}
void AVL_insert_value(AVLTree* avlt, int value)
{
AVLNode* next=avlt->root;
AVLNode* current;
if (avlt->root==NULL){
avlt->root=CreateNode(value);
}
else {
while(next!=NULL) {
current=next;
if(value < next->value) {
next=current->left;
}
else if (value > next->value) {
next=current->right;
}
else { return;
}
}
if(value > current->value){ current->right=CreateNode(value); }
if(value < current->value){ current->left=CreateNode(value); }
}
}
Keine Compilermeldungen, Valgrind beschwert sich auch nicht (free Funktion ist vorhanden). Wo verliere ich den Knoten? Würde mich sehr freuen wenn mir jemand helfen könnte. Typedef ist übrigens auch mit drin, der Fehler muss also semantischer Natur sein..
EDIT: Hab was falsches reinkopiert, bin am ändern
EDIT: Jetzt stimmts. Mein Fehler
EDIT: Mit "Jetzt stimmts" mein ich den Code. Programm läuft immernoch nicht
Zuletzt bearbeitet: