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);
}
Ho trovato questo codice! Secondo voi va bene???