Jeg må kode noen metoder for en BST og jeg har noen problemer, la meg forklare.
Jeg har følgende strukturer:
struct node {
struct node *lChild;
struct node *rChild;
int value;
};
og
struct tree {
struct node *root;
};
sammen med følgende funksjoner:
struct tree* constructNewTree()
{
struct tree *T=malloc(sizeof(struct tree));
T->root=NULL;
return T;
}
og
struct node* constructNewNode(int i)
{
struct node *N=malloc(sizeof(struct node));
N->value=i;
N->lChild=NULL;
N->rChild=NULL;
return N;
}
Og i min viktigste må jeg kaller dette (for eksempel):
int main()
{
struct tree *T;
T=constructNewTree();
insertKey(5,T);
insertKey(2,T);
insertKey(9,T);
return 0;
}
Hva jeg har å gjøre er å lage funksjonen insertKey (int i, struct tre * T) ved hjelp av rekursjon.
Jeg ønsket å gjøre noe sånt
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);
}
}
}
Men det gjør ikke så veldig langt, ved hjelp av rekursjon ville tillate meg å kalle insertKey igjen, men jeg kan ikke synes å bruke en node og et tre på samme måte.
Vet noen hvordan jeg kunne gjøre det uten å endre de gitte strukturene?
Tusen takk.













