Jeg koding et binært søketre og jeg har litt problemer med å finne en måte å slette node effektivt.
Jeg har denne koden:
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;
}
Og N er et nodestruktur som har 5 felt: verdi, lChild, rChild, størrelse, høyde. Faktisk det jeg gjør her er å få treet ikke å peke mot noden som jeg ønsker å slette, men når jeg prøver å sette noe sånt som:
else if (N->rChild==NULL)
{
free(N);
N=NULL;
return N->lChild;
}
Eller hver ligner på jakt kode, fungerer det ikke. Kan noen peke meg i riktig retning please? Takk skal du ha.













