Riguardo a:

codice:
while (scelta == 's' or scelta == 'S');
Non vedo nessun problema alla fine lo utilizzo semplicemente per chiedere ad ogni inserimento se inseririe o meno un altro elemento.

Riguardo a:

dovrebbe restituire un puntatore a tree e non tree e questo puntatore restituito dovresti utilizzarlo, altrimenti perché restituirlo?

Non riesco a capire.