Se ho ben capito il tuo problema, devi usare un albero come struttura dati e poi estrarne il contenuto con una delle varie visite possibili: preordine, postordine, simmetrica... a seconda di come vuoi poi organizzato il risultato.

Per farti un'idea
http://it.wikipedia.org/wiki/Albero_%28informatica%29