J'ai essayé d'implémenter une fonction de suppression pour un arbre de recherche binaire mais je n'ai pas réussi à le faire fonctionner dans tous les cas.Suppression du noeud Binary Search Tree
C'est ma dernière tentative:
Node* RBT::BST_remove(int c)
{
Node* t = get_node(c);
Node* temp = t;
if(t->get_left() == empty)
*t = *t->get_left();
else if(t->get_right() == empty)
*t = *t->get_right();
else if((t->get_left() != empty) && (t->get_right() != empty))
{
Node* node = new Node(t->get_data(), t->get_parent(), t->get_colour(), t->get_left(), t->get_right());
*t = *node;
}
return temp;
}
Node* RBT::get_node(int c)
{
Node* pos = root;
while(pos != empty)
{
if(c < pos->get_data())
pos = pos->get_left();
else if(c == pos->get_data())
return pos;
else
pos = pos->get_right();
}
return NULL;
}
t est un nœud et vide est juste un nœud avec rien dedans. J'essaye juste d'échanger les valeurs mais j'obtiens une erreur d'exécution. Des idées?
edit: Je retourne temp pour l'effacer ensuite.
Merci
Tag la question des devoirs si elle est une question de devoirs, s'il vous plaît. – wilhelmtell
J'ai supposé que je faisais un arbre de recherche binaire donc je ne suis pas vraiment sûr, mais chaque noeud de cet arbre peut tout au plus avoir deux enfants. – doc
Pouvez-vous publier la fonction 'remove()' dans son intégralité? – wilhelmtell