Ho trovato questo codice! Secondo voi va bene???codice:#include<iostream.h> #include<stdlib.h> //creazione classe... class albero { private: class ele_albero { private: ele_albero *p_alb_sin; ele_albero *p_alb_des; public: int dato; friend class albero; }; public: ele_albero *p_iniz; albero::albero() { p_iniz = NULL; } //Funzioni pubbliche... albero::ele_albero *albero::inserisci(ele_albero *p_iniz, int num); void albero::visualizza(ele_albero *p_iniz); void albero::elimina_foglia(ele_albero *p_iniz); }; //Funzione di inserimento dati... albero::ele_albero *albero::inserisci(ele_albero *p_iniz, int num) { ele_albero *p = p_iniz; if(p == NULL) { p = new ele_albero; p->dato = num; p->p_alb_sin = NULL; p->p_alb_des = NULL; } else { if(num < p->dato) p->p_alb_sin = inserisci(p->p_alb_sin, num); //visita sottoalbero sinistro else if(num > p->dato) p->p_alb_des = inserisci(p->p_alb_des, num); //visita sottoalbero destro } return p; } //Funzione di visualizzazione degli elementi dell'albero... void albero::visualizza(ele_albero *p_iniz) { ele_albero *p = p_iniz; if(p != NULL) { cout<<p->dato<<" "; visualizza(p->p_alb_sin); //visita sottoalbero sinistro visualizza(p->p_alb_des); //visita sottoalbero destro } } //Questa funzione cerca tutte le foglie dell'albero e, se l'utente vuole, le //può cancellare... void albero::elimina_foglia(ele_albero *ptr_iniz) { ele_albero *ptr_sin, *ptr_des; ptr_sin = ptr_iniz->p_alb_sin; ptr_des = ptr_iniz->p_alb_des; if(ptr_sin == NULL && ptr_des == NULL) //è un solo nodo { delete p_iniz; p_iniz = NULL; cout<<"ELIMINATA RADICE!! ALBERO VUOTO!!\n\n"; } char risp; //ramo sinistro if (ptr_sin != NULL) if (ptr_sin->p_alb_sin == NULL && ptr_sin->p_alb_des == NULL) { cout<<"Trovata foglia: "<<ptr_sin->dato<<". Cancellare?"; cin>>risp; if(risp=='s') { delete ptr_sin; ptr_iniz->p_alb_sin=NULL; } } else elimina_foglia(ptr_sin); //ramo destro if (ptr_des != NULL) if (ptr_des->p_alb_sin == NULL && ptr_des->p_alb_des == NULL) { cout<<"\nTrovata foglia: "<<ptr_des->dato<<". Cancellare?"; cin>>risp; if(risp == 's') { delete ptr_des; ptr_iniz->p_alb_des = NULL; } } else elimina_foglia(ptr_des); } void main() { int scelta, num; albero tree; do { cout<<"\n\n\t\t\t GESTIONE ALBERO\n"; cout<<"\n\n\t Digita il numero corrispondente alla funzione da eseguire\n"; cout<<"\n\n1. Inserisci elemento;\n"; cout<<"\t\t\t\t\t\t 2. Elimina elemento;\n"; cout<<"\n3. Visualizza albero;\n"; cout<<"\t\t\t\t\t\t 0. Termina esecuzione;\n"; cout<<"\n\t\t\t FAI LA TUA SCELTA: "; cin>>scelta; cout<<"\n"; switch(scelta) { case 1: { do { cout<<"\n\n\t\tInserisci elemento (0 per terminare): "; cin>>num; if(num != 0) //attivazione funzione "inserisci"... tree.p_iniz = tree.inserisci(tree.p_iniz, num); } while(num != 0); cout<<"\n\n"; system("PAUSE"); break; } case 2: { //attivazione funzione "elimina_foglia"... tree.elimina_foglia(tree.p_iniz); cout<<"\n\nL'ALBERO RISULTA COSI' COMPOSTO: "; //attivazione funzione "visualizza"... tree.visualizza(tree.p_iniz); cout<<"\n\n"; system("PAUSE"); break; } case 3: { cout<<"\n\nL'ALBERO RISULTA COSI' COMPOSTO: "; //attivazione funzione "visualizza". tree.visualizza(tree.p_iniz); cout<<"\n\n"; system("PAUSE"); break; } } } while(scelta != 0); }