Ik ben het coderen van een binaire zoekboom en ik heb een beetje moeite met het vinden van een manier om het knooppunt effectief te verwijderen.
Ik heb deze code:
struct node* deleteNode(int i, struct node *N)
{
if (N==NULL)
{
return NULL;
}
else if (i<N->value)
{
N->size--;
N->lChild=deleteNode(i,N->lChild);
}
else if (i>N->value)
{
N->size--;
N->rChild=deleteNode(i,N->rChild);
}
else if (N->lChild==NULL)
{
return N->rChild;
}
else if (N->rChild==NULL)
{
return N->lChild;
}
else
{
N->size--;
N->value=findMin(N->rChild);
N->rChild=deleteNode(N->value,N->rChild);
}
return N;
}
En N een knooppuntstructuur die 5 velden: waarde lChild, rChild, grootte, hoogte. In feite wat ik hier doe is om de boom niet te maken om te wijzen in de richting van het knooppunt dat ik wilt verwijderen, maar als ik ben op zoek naar iets als gezegd:
else if (N->rChild==NULL)
{
free(N);
N=NULL;
return N->lChild;
}
Of iedere elkaar lijkende code, werkt het niet. Kan iemand me in de juiste richting alstublieft? Dank je.













