/* semplice programma di utilizzo della libreria degli alberi binari
* di ricerca, si generano dei numeri casuali e li si inseriscono.
* L'attraversamento inorder mi restituisce il tutto ordinato */
#include<iostream.h>
#include<stdlib.h>
#include<math.h>
#include"tree.h"
int main(int argc, char **argv){
int num,ii;
tipo_chiave valore_da_inserire;
struct tnodo *albero, *tmp, *na;
// inizializzazione
if(argc<2){
cerr << "Utilizzo: " << argv[0] << " <numero valori da gestire>\n";
exit(EXIT_FAILURE);
}
num=atoi(argv[1]);
albero=na=NULL;
// genero numeri casuali e li inserisco nell'albero
for(ii=num;ii>0;--ii){
valore_da_inserire=sqrt(rand());
tmp=crea_nodo();
tmp->key=valore_da_inserire;
na=tree_insert(albero, tmp);
if(na!=NULL)albero=na;
}
// li stampo ordinati
cout << "\n";
inorder_r(albero);
cout << "\n";
tmp=tree_select(albero,num/2);
cout << "Elemento "<< num/2 << "=" << tmp->key << endl;
tmp=tree_select(albero,0);
cout << "Elemento 0" << "=" << tmp->key << endl;
// vediamo l'altezza dell'albero
cout << "La dimensione dell'albero generato è: " << tree_size(albero) << endl;
cout << "L'altezza dell'albero generato è: " << tree_height(albero) << endl;
// alcune operazioni di test
albero=tree_partition(albero,0);
albero=tree_partition(albero,num/2);
albero=tree_balance(albero);
cout << "L'altezza dell'albero bilanciato è: " << tree_height(albero) << endl;
return 0;
}