Tehát, ha törlök bináris keresési fa, akkor is kell, hogy mint 7 különböző esetekben, azaz
- Bal Leaf;
- Jobb Leaf;
- Bal gyermek csak elhagyta gyermekét. // azaz a törlendő csomópontra a bal gyermeke ez a szülő, és azt csak a bal gyerek.
- Bal Gyermek egyetlen helyes gyerek.
- Jobb gyermek csak elhagyta gyermekét.
- Jobb gyermek egyetlen helyes gyerek.
- Node törölni kell azt mind a gyermekek, azaz jobbra és balra.
Most, amikor ezt a kódot használja if-elseez lesz elég csúnya .. van más módja ennek.
Itt van a kódrészletet
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;
}













