{Terreno Antonio}
uses
alberi,crt;
procedure menu;
begin
clrscr;
writeln('MENU'' OPERAZIONI:');
writeln ('[ a ] --> inserisci elemento');
writeln ('[ b ] --> leggi albero da tastiera');
writeln ('[ c ] --> cancella x');
writeln ('[ d ] --> dealloca albero ');
writeln ('[ e ] --> trova elemento');
writeln ('[ f ] --> altezza');
writeln ('[ g ] --> stampa foglie');
writeln ('[ h ] --> somma valori nodi');
writeln ('[ i ] --> numero nodi');
writeln ('[ l ] --> numero nodi fino al livello');
writeln ('[ m ] --> numero nodi dopo il livello');
writeln ('[ n ] --> numero nodi tra inf e sup');
writeln ('[ o ] --> numero nodi al livello ');
writeln ('[ p ] --> stampa albero');
writeln ('[ q ] --> stampa anticipato');
writeln ('[ r ] --> stampa posticipato');
writeln ('[ s ] --> stampa simmetrico');
writeln ('[ x ] --> Uscita');
end;
var
opzione: char;
albero: tipo_albero;
elemento: tipo_elemento;
inf,sup,liv: integer;
begin
writeln;
menu;
writeln;
write ('Scegliere l''operazione da compiere: ');
readln (opzione);
while not (opzione = 'x') do
begin
case opzione of
'a': begin
write('elemento? ');
readln(elemento);
inserisci_elemento(albero,elemento);
end;
'b': leggi_da_tastiera(albero);
'c': begin
write('elemento? ');
readln(elemento);
cancella_elemento(albero,elemento);
end;
'd': dealloca_albero(albero);
'e': begin
write('elemento? ');
readln(elemento);
writeln(trova_elemento(elemento,albero));
end;
'f': writeln('altezza -> ',altezza(albero));
'g': stampa_foglie(albero);
'h': writeln(somma_valori_nodi(albero));
'i': writeln(numero_nodi(albero));
'l': begin
write('livello? ');
readln(liv);
writeln(num_nodi_fino(albero,liv));
end;
'm': begin
write('livello? ');
readln(liv);
writeln(num_nodi_dopo(albero,liv));
end;
'n': begin
write('inf? ');
readln(inf);
write('sup? ');
readln(sup);
writeln(num_nodi_tra(albero,inf,sup));
end;
'o': begin
write('livello? ');
readln(liv);
writeln(num_nodi_a(albero,liv));
end;
'p': begin
clrscr;
stampa_albero(albero);
end;
'q': stampa_anticipato(albero);
'r': stampa_posticipato(albero);
's': stampa_simmetrico(albero);
end;
readln;
menu;
writeln;
write ('Scegliere l''operazione da compiere: ');
readln (opzione);
end
end.