prima di programmare fatti una specie di schema mentale per capire come strutturare la funzione ricorsiva. nel particolare cosa vuoi che ritorni. questo perché essendo ricorsiva significa che tutte le chiamate tornano lo stesso tipo di dato quindi dei lavorare con quello. se decidi di lavorare con stringhe o liste di stringhe è uguale, basta che ti adegui. perché quando lanci la ricorsione su un figlio, quello ti ritorna una risultato su cui devi lavorare, e a tua volta tornare un risultato di quel tipo per poterci lavorare ad eventuali livelli superiori. dopo aver deciso come rappresentare un albero inizia a pensare proprio a come si costruisce, a partire dai figli e poi unendoli a creare l'albero attuale, che poi ritornerai per lavorarci a livelli superiori. io ti consiglio di usare una lista di stringhe dove ogni stringa è una riga completa di spazi, e le righe sono teoricamente separate da \n, che però non metti in quanto sono elementi diversi