ho aggiunto un return null:
in questo modo non mi genera piu seg-default.. pero la ricerca termina quando un nodo non ha figli, quindi non torna indietro la chiamata ricorsiva in pratica.codice:struct node *cerca(struct node *root,struct node *elemento){ // cerca il nodo elemento nell'albero radicato in root 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"); return root; } else { if (root->children != NULL) { iterator i = get_iterator(root->children); while (has_next(i)) { struct node *temp = (struct node *)next(i); printf("nodo in esame: %s\n",temp->name); //if (strcmp(temp->name,elemento->name) == 0) return temp; return cerca(temp,elemento); } } return NULL; } }
cioè quando visita un nodo che non è uguale all'elemento da cercare, invece di risalire e continuare la ricerca, sospende (credo a causa el return NULL che ho messo).
![]()

Rispondi quotando