Πρέπει να κωδικοποιήσει κάποιες μεθόδους για BST και έχω κάποια προβλήματα, επιτρέψτε μου να εξηγήσω.
Έχω τις ακόλουθες δομές:
struct node {
struct node *lChild;
struct node *rChild;
int value;
};
και
struct tree {
struct node *root;
};
μαζί με τις ακόλουθες λειτουργίες:
struct tree* constructNewTree()
{
struct tree *T=malloc(sizeof(struct tree));
T->root=NULL;
return T;
}
και
struct node* constructNewNode(int i)
{
struct node *N=malloc(sizeof(struct node));
N->value=i;
N->lChild=NULL;
N->rChild=NULL;
return N;
}
Και στην κύρια μου, πρέπει να καλέσετε αυτό (για παράδειγμα):
int main()
{
struct tree *T;
T=constructNewTree();
insertKey(5,T);
insertKey(2,T);
insertKey(9,T);
return 0;
}
Αυτό που έχετε να κάνετε είναι να δημιουργήσετε το insertKey λειτουργία (int i, struct δέντρο * T) με τη χρήση της αναδρομής.
Ήθελα να κάνω κάτι σαν
void insertKey(int i, struct tree *T)
{
if (T->root==NULL) {
T->root=constructNewNode(i);
return;
}
else {
if (i<=T->root->value) {
T->root->lChild=constructNewNode(i);
else if (i>T->root->value) {
T->root->rChild=constructNewNode(i);
}
}
}
Αλλά δεν πάμε πολύ μακριά, χρησιμοποιώντας την αναδρομή, θα μου επιτρέψετε να καλέσετε insertKey και πάλι, αλλά δεν μπορώ να φαίνεται για να χρησιμοποιήσετε ένα κόμβο και ένα δέντρο με τον ίδιο τρόπο.
Ξέρει κανείς πώς μπορώ να το κάνουμε αυτό χωρίς να αλλοιώνει τις δεδομένες δομές;
Ευχαριστώ πολύ.













