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!!
![]()
ps: ho aggiunto alla funzione una lista, con lo scopo di salvare piu nodi se ne trova piu di uno uguale a quello cercato.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; } }

Rispondi quotando