/* 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<stdio.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 */
num=atoi(argv[1]);
srand(num);
albero=na=NULL;
/* genero numeri casuali e li inserisco nell'albero */
for(ii=num;ii>0;--ii){
valore_da_inserire=sqrt(rand());
if(albero==NULL){
albero=crea_albero();
albero->key=valore_da_inserire;
}else{
tmp=crea_nodo();
tmp->key=valore_da_inserire;
na=rand_tree_insert(albero, tmp);
if(na!=NULL)albero=na;
}
}
/* li stampo ordinati */
inorder_r(albero);
printf("\n");
tmp=tree_select(albero,num/2);
printf("elemento %d=%g\n",num/2,tmp->key);
tmp=tree_select(albero,0);
printf("elemento %d=%g\n",0,tmp->key);
/* vediamo l'altezza dell'albero*/
printf("La dimensione dell'albero generato è: %d\n",tree_size(albero));
printf("L'altezza dell'albero generato è: %d\n",tree_height(albero));
/* alcune operazioni di test */
albero=tree_partition(albero,0);
albero=tree_partition(albero,num/2);
albero=tree_balance(albero);
printf("L'altezza dell'albero bilanciato è: %d\n",tree_height(albero));
return 0;
}