ho modificato la funzione cerca.. se non altro ho fatto passi avanti.. infatti ora la funzione riesce a scandire tutti i nodi dell'albero e trova anche quelli che deve trovare.. solo che alla fine, dopo aver visitato l'ultimo nodo va in seg default.. uff!!
codice:
struct node *cerca2(struct node *root,struct node *elemento,list *nodi_trovati){
// cerca il nodo elemento nell'albero radicato in root
if (root == NULL) return NULL;
printf("stiamo cercando il nodo %s nell'albero %s\n",elemento->name,root->name);
if (strcmp(root->name,elemento->name) == 0) { // controlla radice
printf("trovato\n");
int a = add_last(nodi_trovati,root);
return root;
} else {
if (root->children != NULL) {
iterator i = get_iterator(root->children);
while (has_next(i)) {
struct node *temp = (struct node *)next(i);
temp = cerca2(temp,elemento,nodi_trovati);
}
} else return NULL;
}
}
ps: ho aggiunto alla funzione una lista, con lo scopo di salvare piu nodi se ne trova piu di uno uguale a quello cercato.