Wenn das Programm "vernünftig" angewandt wird, also mit realistischen
LaTeX-Dokumenten, sollte die Rekursion kein Problem darstellen, da der
Programmstack auf PCs typischerweise ein paar Megabytes groß ist und bei
Bedarf auch noch vergrößert werden kann.
Wenn der Anwender das Programm aber auf Herz und Nieren testen wird,
würde ich auf die Rekursion verzichten und stattdessen dynamischen
Speicher verwenden. Auch der Speicher wird irgendwann überlaufen, das
ist von der Software aber leichter zu erkennen, so dass sich das
Programm dann kontrolliert mit Fehlermeldung beenden kann.
Ich würde das Ganze auch nicht als Baum, sondern als allgemeinen
gerichteten Graphen darstellen. Das wird übersichtlicher, wenn eine
Datei mehrfach inkludiert wird, die ihrerseits weitere Dateien
inkludiert. Dann enthält der Baum mehrere gleiche Unterbäume, was ihn
unnötig aufbläht. Im gerichteten Graphen hingegen taucht jede Datei
genau einmal auf. Zudem können damit auch die von Jürgen angesprochenen
rekursiven Inklusionen problemlos dargestellt werden. Da bei der
Generierung des gerichteten Graphen ein rekursiver Algorithmus nicht
einfacher als ein iterativer ist, stellt sich die Frage nach der
Legitimität der Rekursion gar nicht erst.
In den meisten LaTeX-Dokumenten wird jede Datei nur einmal inkludiert,
so sich der gerichtete Graph nicht vom Baum unterscheiden wird. Da die
Programmierung des Graphen nicht schwieriger ist, würde ich diesen
vorziehen.
Lediglich die grafische Darstellung des Graphen wird aufwendiger, aber
dafür gibt es ja bspw. das Graphviz-Paket.