Dus toen ik verwijder in binaire zoekboom, moet ik als 7 verschillende gevallen ie hebben
- Left Leaf;
- Right Leaf;
- Links kind met alleen links kind. // dat wil zeggen het knooppunt dat u wilt verwijderen is de linker kind van zijn ouder en het is alleen links kind.
- Links Kind met enige juiste kind.
- Rechts kind met alleen links kind.
- Rechts kind met enige juiste kind.
- Knooppunt worden verwijderd, is zowel de kinderen wil zeggen rechts en links.
Nu wanneer deze code gebruikt if-elsekrijgt het redelijk smerig .. is er een andere manier om dit te doen.
Hier is mijn code snippet
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;
}













