Sì, c'è un modo molto migliore. Il cosiddetto algoritmo di attraversamento dell'albero del preordine modificato. Puoi trovare molte informazioni su Google e sono sicuro che anche in caso di overflow dello stack.
I vantaggi sono che puoi recuperare un intero sottoalbero usando solo 1 query. SELECTS sarà veloce, ma le modifiche sono più pesanti.