Così, quando elimino in albero binario di ricerca, ho bisogno di avere come 7 casi diversi vale a dire
- Foglia di sinistra;
- Foglia destro;
- Child Left con il bambino lasciato solo. // vale a dire il nodo da eliminare è il figlio sinistro del suo genitore e che ha lasciato figlio unico.
- Child Left solo figlio destro.
- figlio destro con il bambino lasciato solo.
- figlio destro con un solo figlio destro.
- Nodo da eliminare ha sia i bambini cioè a destra ea sinistra.
Ora, quando questo codice sta usando if-elsediventa piuttosto brutto .. c'è qualche altro modo di fare questo.
Ecco il mio frammento di codice
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;
}













