Bu yüzden, ikili arama ağacında silme ben yani gibi 7 farklı durumlarda olması gerekir ne zaman
- Sol Yaprak;
- Sağ Yaprak;
- Sadece sol çocukla çocuk bıraktı. // silinecek düğüm bunun sol çocuğudur ebeveyn var yani ve sadece çocuğu bırakmıştır.
- Sadece sağ çocukla Çocuk bıraktı.
- Sadece sol çocukla Sağ çocuğu.
- Sadece sağ çocukla Sağ çocuğu.
- Düğüm iki çocuk sağ ve sol, yani gelmiştir Silinecek.
Bu kod kullanırken Şimdi if-elseoldukça kötü alır .. Bunu yapmanın başka bir yolu yoktur.
İşte benim kod parçacığı olduğunu
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;
}













