...Continua
codice:
void CreaAlberoDaFile(PAnodo &Tree){
char num[20];
cout<<"Crea Albero da FILE:"<<endl;
Tree=NULL;
string NomeLn,NomeOut;
ifstream filista;
ofstream outlista;
NomeLn="alberocar.txt";
filista.open(NomeLn.c_str());
if(!filista){
cerr<<"Non si puo' aprire il file!"<<endl;
system("pause");
}
filista>>num;
while (!filista.eof()) {
bool temp=false;
bool left=false,right=false;
InsertSort2( Tree, num, temp,left,right);
if (temp==false) cout<<"Nome preesistente ="<<num<<endl;
else cout<<" Inserito Nome= "<<num<<endl;
filista>>num;;
}
system("pause");
filista.close();
}
//Essendo non Ordinato ci possono essere ripetizioni
void InsertSort2( PAnodo &A,char m[], bool &inserito, bool &left, bool &right)
{ //Non Ord
if(A==NULL) {
A=new Anodo;
strcpy(A->key,m);
A->left=NULL;
A->right=NULL;
inserito=true;
}
else if(stricmp(A->key,m)<0 && !left){
left=true;
right=false;
InsertSort2(A->right,m,inserito,left,right);
}
else if(stricmp(A->key,m)>0 && left && !right){
left=false;
right=true;
InsertSort2(A->left,m,inserito,left,right);
}
else InsertSort2(A->left,m,inserito,left,right);
}
/*
void InsertSort3( PAnodo &A,char m[], bool &inserito) { //Ordinato
if(A==NULL) {
A=new Anodo;
strcpy(A->key,m);
A->left=NULL;
A->right=NULL;
inserito=true;
}
else if(stricmp(A->key,m)<0) InsertSort2(A->right,m,inserito);
else if(stricmp(A->key,m)>0) InsertSort2(A->left,m,inserito);
else inserito=false;
}*/
void StampaBST(PAnodo Tree,int i){
if(Tree!=NULL){
StampaBST(Tree->right,i+1);
for(int j=1;j<=i;j++)
cout<<"\t\t";
cout<<Tree->key;
cout<<endl<<endl<<endl;
StampaBST(Tree->left,i+1);
}
}
Grazie