Είμαι κωδικοποίησης ένα δυαδικό δέντρο αναζήτησης και είμαι έχοντας ένα μικρό πρόβλημα να βρεθεί ένας τρόπος για να διαγράψετε την αποτελεσματική κόμβο.
Έχω αυτόν τον κώδικα:
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;
}
Και N είναι μια δομή κόμβων που έχουν 5 πεδία: αξία, lChild, rChild, το μέγεθος, το ύψος. Στην πραγματικότητα αυτό που κάνω εδώ είναι να κάνει το δέντρο να μην δείχνουν προς τον κόμβο που θέλετε να διαγράψετε, αλλά όταν προσπαθώ να βάλει κάτι σαν:
else if (N->rChild==NULL)
{
free(N);
N=NULL;
return N->lChild;
}
Ή κάθε παρόμοια κωδικό αναζητούν, δεν λειτουργεί. Μπορεί κάποιος να μου το σημείο προς τη σωστή κατεύθυνση παρακαλώ; Ευχαριστώ.













