Én kódoló bináris kereső fába, és én magam egy kis baj találni a módját, hogy törölje csomópont hatékonyan.
Én ezt a kódot:
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;
}
És n értéke egy csomópont szerkezete, amelyek 5 mezők: érték, lChild, rChild, mérete, magassága. Tény, hogy mit csinálok itt az, hogy a fa nem pont felé csomópontot, hogy szeretnék törölni, de amikor próbálok tenni valamit, mint például:
else if (N->rChild==NULL)
{
free(N);
N=NULL;
return N->lChild;
}
Vagy minden hasonló kinézetű kódot, akkor nem működik. Tud valaki nekem pont a helyes irányba, kérem? Köszönöm.













