Mam problem z przyspieszeniem wyszukiwania i dodawania elementow do drzewa, juz nie mam pomyslu jak to usprawnic. Prosze o pomoc.
funkcja dodajaca elementy
void dodaj(NODE *n, char *pol, char *eng) {
NODE *new, *p = n; int t;
while(n != NULL) {
p = n; t = strcmp(pol, n->slowo_pl);
if(t == -1)
n = n->left;
else if(t == 1)
n = n->right;
}
if(n != NULL)
t = strcmp(p->slowo_pl, pol);
new = (NODE*)malloc(sizeof(NODE));
strcpy(new->slowo_pl, pol);
strcpy(new->slowo_en, eng);
new->left = NULL;
new->right = NULL;
if(p == NULL) {
new->parent = NULL;
root = new;
} else if(t == -1){
new->parent = p;
p->left = new;
} else {
new->parent = p;
p->right = new;
}
}
funkcja wyszukujaca elementy
void szukaj(NODE *n, char *pol, int licznik) {
while(n != NULL && strcmp(n->slowo_pl, pol)){
if(strcmp(n->slowo_pl, pol) == 1)
n = n->left;
else
n = n->right;
}
if(n == NULL) {
printf("nie ma :D :D\n");
return;
} else
printf("%s\n", n->slowo_en);
}
drzewo
typedef struct node {
char slowo_pl[12];
char slowo_en[12];
struct node *left, *right, *parent;
} NODE;
NODE *root = NULL;
Bede wdzieczny za nakierowania na jakas metode usprawniajaca te dwie powyzsze funkcje.