Ciao, il codice per costruire l'albero mi sembra corretto...te lo posto comunque per vedere se magari mi è sfuggito qualcosa!
typedef struct _nodo{
int key;
struct _nodo *left;
struct _nodo *right;
} nodo;
nodo* inserisciRic(nodo *tree, int input){
if(tree==NULL){
nodo *new=(nodo*) malloc(sizeof(nodo));
new->key=input;
new->left=NULL;
new->right=NULL;
}
else{
if(tree->key>input) tree->left=inserisciRic(tree->left, input);
else tree->right=inserisciRic(tree->right, input);
}
}
main(){
int n, i, input; nodo *tree, *radice;
scanf("%d", &n);
if(n==0) radice=NULL;
else{
radice=(nodo*) malloc(sizeof(nodo));
scanf("%d", &radice->key);
radice->left=NULL;
radice->right=NULL;
tree=radice;
for(i=1; i<n; i++){
scanf("%d", &input);
inserisciRic(tree, input);
}
}
visitaSimmetrica(tree);
return 0;
}