Așa că atunci când am șters în arbore binar de căutare, am nevoie pentru a avea ca 7 cazuri diferite, și anume
- Frunza stânga;
- Leaf pe dreapta;
- Stânga copil cu copil doar la stânga. // adică nodul care urmează să fie șters este copilul stâng al e-mamă și-a lăsat doar copil.
- Stânga copil cu copil numai dreapta.
- copil pe dreapta cu copilul doar la stânga.
- copil dreapta doar cu copil dreapta.
- Nodul care urmează să fie șters atât a copiilor, adică dreapta și la stânga.
Acum , când acest cod folosește if-elsedevine destul de urât .. există nici un alt mod de a face acest lucru.
Iată fragmentul de cod meu
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;
}













