Alors, quand je supprimer dans l'arbre de recherche binaire, ai-je besoin d'avoir comme 7 cas différents à savoir
- Feuille gauche;
- Feuille droit;
- enfant laissé seul enfant gauche. //-à-dire le noeud à supprimer est l'enfant gauche de son parent et il n'a que l'enfant reste.
- Enfant gauche avec enfant unique droit.
- droit de l'enfant avec l'enfant ne reste.
- droit de l'enfant avec enfant unique droit.
- Noeud à supprimer a deux enfants à savoir droite et à gauche.
Maintenant , lorsque ce code utilise if-elseça devient assez méchant .. est - il une autre façon de le faire.
Voici mon extrait de code
if(current->left==NULL && current->right==NULL && current->key<prev->key) //left leaf
prev->left=NULL;
else if(current->left==NULL && current->right==NULL && current->key>prev->key) // right leaf
prev->right=NULL;
else if(current->left!=NULL && current->right==NULL && current->key<prev->key) // left child with one child
prev->left=current->left;
else if(current->left==NULL && current->right!=NULL && current->key<prev->key)
prev->left=current->right;
else if(current->left!=NULL && current->right==NULL && current->key>prev->key)
prev->right=current->left;
else if(current->left==NULL && current->right!=NULL && current->key>prev->key)
prev->right=current->left;
else if(current->left!=NULL && current->right!=NULL)
{
check=current->right;
check1=check;
while(check->left!=NULL)
{
check1=check;
check=check->left;
}
*current=*check;
check1->left=NULL;
}













