Ich glaube, meine Einfügefunktion ist richtig, aber es sieht so aus, als ob der neue Knoten nicht in den Baum eingefügt wird. Ich konnte nicht herausfinden, wo der Fehler ist. Ich schätze jede Hilfe, danke.Ich kann keinen neuen Knoten in den Binärbaum einfügen
Es ist die Deklaration von Knoten und Baum:
class Node{
int key;
Node *right, *left;
}
class Tree{
public:
int init();
Node *root;
Node *insert(int key, Node *p);
};
gibt es die Funktionen:
int Tree::init(){
this->root = NULL; return 1;
}
Node *Tree::insert(int key, Node *p){
if(p == NULL){
Node *novo = new Node();
novo->key = key;
novo->left = NULL;
novo->right = NULL;
p = novo;
}
else if(key < p->key){ p->left = insert(key, p->left); }
else if(key > p->key){ p->right = insert(key, p->right); }
else{ cout << "Error: key already exist" << endl; }
return p;
}
Wenn ich die Funktion im Haupt nennen, es sieht aus wie es nicht die neuen Anknüpfungspunkt node
Off Topic: warum 'int Tree :: init()' anstelle eines Konstruktors? – user4581301
Dein 'MCVE' kompiliert nicht - ich habe es mit' gcc' versucht. –