vuoi
o PayPal
tutte le volte che vuoi
Semplice programmino in C++ che tratta gli alberi, in questo programma si puo lavorare su un albero creandolo,modificandolo stampando a video e tante altre funzioni.
void tree::inserisci(int x)
{ insert(testa,x);
}
void tree::insert(nodo* &p,int x)
{ if(!p)
{ p=new nodo;
p->x=x;
p->sx=NULL;
p->dx=NULL;
}
else
if(x<=p->x)
insert(p->sx,x);
else
insert(p->dx,x);
}
void tree::visual()
{ print(testa);
}
void tree::print(nodo* &p)
{ if(!p)
cout<<"\n L'albero e' vuoto";
else
{ print(p->sx);
print(p->dx);
cout<<p->x<<endl;
}
}
void tree::cancella()
{ deltree(testa);
testa=NULL;
}
void tree::deltree(nodo* &p)
{ if(p)
{ deltree(p->sx);
deltree(p->dx);
delete p;
}
}
void tree::operator=(const tree &ob)
{ deltree(testa);
copia(ob.testa,testa);
}
tree tree::operator++()
{ add(testa,1);
return *this;
}
void tree::add(nodo* &p,int x)
{ if(p)
{ p->x=p->x+x;
add(p->sx,x);
add(p->dx,x);
}
}
tree tree::operator+(int x)
{ tree temp;
copia(temp.testa,testa);
temp.inserisci(x);
return temp;
}
void tree::visita(int x)
{ if(x==1) visitaord(testa);
if(x==2) visitapostord(testa);
if(x==3) visitapreord(testa);
}
void tree::visitaord(nodo* p)
{ if(p)
{ visitaord(p->sx);
cout<<"\n l'elemento e': "<<p->x<<endl;
visitaord(p->dx);
}
}
void tree::visitapostord(nodo* p)
{ if(p)
{ visitapostord(p->sx);
visitapostord(p->dx);
cout<<"\n l'elemento e': "<<p->x<<endl;
}
}
void tree::visitapreord(nodo* p)
{ if(p)
{ cout<<"\n l'elemento e': "<<p->x<<endl;
visitapreord(p->sx);
visitapreord(p->dx);
}
}
int conta(nodo* p)
{ if(p)
return(1+conta(p->sx)+conta(p->dx));
else
return 0;
}
void contafoglie(tree &ob)
{ int n;
n=conta(ob.testa);
if(n)
cout<<"\n Il numero di foglie e' "<<n<<endl;
else
cout<<"\n Non ci sono nodi nell'albero!"<<endl;
} main()
{ tree albero;
int elemento,scelta,scelta2,cont,val;
cont = 1;
while(cont)
{ cout<<"\n -OPTIONS- ";
cout<<"\n 1. Inserisci elemento";
cout<<"\n 2. Visualizza l'albero";
cout<<"\n 3. Costr. copy";
cout<<"\n 4. Somma di un elemento all'albero";
cout<<"\n 5. Cancella albero";
cout<<"\n 6. Conta numero foglie";
cout<<"\n 7. Visita albero";
cout<<"\n 8. Esci dal programma";
cout<<"\n\nInserisci la tua scelta: ";
cin >> scelta;
if(scelta==1)
{ cout<<"\nDai l'elemento da inserire: ";
cin>>elemento; cout<<"\n Grazie!";
albero.inserisci(elemento);
}
if(scelta==2)
albero.visual();
if(scelta==3)
{ cout<<"\nUtilizzo costruttore copy...";
tree albero2 = albero;
albero2.visual();
cout<<"\nCostruttore copy utilizzato!";
}
if(scelta==4)
{ cout<<"\nInserisci l'elemento da sommare: ";
cin>>val;
albero=albero+val;
cout<<"\nOverloading somma effettuata!";
}
if(scelta==5)
albero.cancella();
if(scelta==6)
contafoglie(albero);
if(scelta==7)
{ cout<<"\n -VISITA-";
cout<<"\n digita 1 per visita in ordine";
cout<<"\n digita 2 per visita in postordine";
cout<<"\n digita 3 per visita in preordine";