PDA

View Full Version : [C] ricerca in albero binario


gigippa
07-06-2008, 15:26
Devo implementare una funzione tree find_name(tree T, char *vname) che cerca nell’albero T un nodo con campo name uguale a vname; se lo trova, ritorna il puntatore a tale nodo, altrimenti ritorna NULL.
L' albero deve avere questa struttura

typedef struct _node *tree;
struct _node {
char *name;
double val;
tree left, right;
};

e la funzione l' ho pensata così.

tree find_name(tree T, char *name){
if(T == NULL)
return NULL;

if((T->name)==name)
return T;
else return (strcmp(name,(T)->name) < 0) ? find_name(T->left,name):find_name(T->right,name);
}
Può andare??

wingman87
07-06-2008, 15:41
e la funzione l' ho pensata così.

tree find_name(tree T, char *name){
if(T == NULL)
return NULL;

if((T->name)==name)
return T;
else return (strcmp(name,(T)->name) < 0) ? find_name(T->left,name):find_name(T->right,name);
}
Può andare??
Per controllare se due stringhe sono uguali non puoi confrontare i due puntatori che le referenziano, devi usare anche lì la strcmp.
Siccome nell'if fai un return l'else non è necessario.

gigippa
07-06-2008, 15:53
Per controllare se due stringhe sono uguali non puoi confrontare i due puntatori che le referenziano, devi usare anche lì la strcmp.
Siccome nell'if fai un return l'else non è necessario.
Hai ragione. Mi ero dimenticato di correggere quel punto. Grazie!!!