Så når jeg sletter i binært søketre, må jeg ha som 7 forskjellige tilfeller dvs.
- Venstre Leaf;
- Høyre Leaf;
- Venstre barn med bare igjen barn. // dvs. noden som skal slettes er venstre barn av sin overordnede, og det har bare igjen barn.
- Venstre Barn med bare høyre barn.
- Høyre barn med bare igjen barn.
- Høyre barn med bare høyre barn.
- Node som skal slettes har både barna dvs. høyre og venstre.
Nå når denne koden er å bruke if-elsedet blir ganske ekkel .. er det noen annen måte å gjøre dette.
Her er mitt kodebiten
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;
}













