
Untitled
By: a guest on
May 2nd, 2012 | syntax:
None | size: 2.72 KB | hits: 10 | expires: Never
#include <iostream>
#include <cstdlib>
using namespace std;
struct Tnodo{
int info;
Tnodo* left;
Tnodo* right;
};
typedef Tnodo* Pnodo;
void menu();
void insert(Pnodo&,int);
Pnodo casuale(int);
Pnodo inserimento(int,Pnodo,Pnodo);
void stampa(Pnodo);
bool verifica(Pnodo,int);
void modifica(Pnodo,Pnodo&,int);
main(){
Pnodo A=NULL;
Pnodo B=NULL;
int i=0;
int n,k;
int sel;
int info;
do{
menu();
cin>>sel;
switch(sel){
case 1:
cout<<"Altezza albero ";
cin>>n;
A=casuale(n);
break;
case 2:
stampa(A);
cout<<endl;
break;
case 3:
// cout<<"inserisci il multiplo: ";
// cin>>k;
modifica(A,B,3);
break;
case 4:
stampa(B);
cout<<endl;
break;
}
}while(sel>0&&sel<5);
system("pause");
}
void menu(){
cout<<"1] Inserisci Albero. "<<endl;
cout<<"2] Stampa A."<<endl;
cout<<"3] Modifica. "<<endl;
cout<<"4] Stampa B. "<<endl;
cout<<"0] Esci. "<<endl;
}
void insert(Pnodo& A,int info){
if(A==NULL){
A=new Tnodo;
A->info=info;
A->left=NULL;
A->right=NULL;
}
else if(info<A->info)
insert(A->left,info);
else
insert(A->right,info);
}
Pnodo inserimento(int info,Pnodo As,Pnodo Ad){
Pnodo A2;
A2=new Tnodo;
A2->info=info;
A2->left=As;
A2->right=Ad;
return A2;
}
Pnodo casuale(int n){
int info;
cout<<"Inserisci il valore: ";
cin>>info;
if(n==0)
return inserimento(info,NULL,NULL);
else
return inserimento(info,casuale(n-1),casuale(n-1));
}
bool verifica(Pnodo B,int a){
if(B!=NULL){
if(B->info==a);
return true;
return(verifica(B->left,a)||verifica(B->right,a));
}
else
return false;
}
void modifica(Pnodo A,Pnodo& B,int k){
if(A!=NULL){
if((A->info%k!=0)&&(!verifica(B,A->info)))
insert(B,A->info);
modifica(A->left,B,k);
modifica(A->right,B,k);
}
}
void stampa(Pnodo A){
if(A!=NULL){
stampa(A->left);
cout<<A->info<<" ";
stampa(A->right);
}
}