Originariamente inviato da pakylory
codice:
//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);
}
Scusate ragazzi ma ho un problema con il codice su riportato!!!
Non si riesce ad eliminare l'ultimo dato ovvero la radice, come mai???
Per favore rispondete