Na meistnes hat man einfach eine Parent-Spalte, wo man den jeweiligen übergeordneten HKnoten1, HKnoten2 und UKnoten1.n verlinkt und leer, wenn es selber die Rootknoten HKnoten1 und HKnoten2 sind.
Meistens aber nicht direkt auf den "Text", falls er mal leer oder doppelt ist, sondern gegen eine ID (z.B. blind durchnummeriert oder ein Timestamp oder eine sprechende ID)
Und passend dazu nutzen gute Grid-/Tree-Komponenten genau das selbe Model.
[add]
Statt des Parent kann man auch den kompletten Pfad speichern, siehe das
MSSQL,
oder bei einer Liste von Dateinamen, inkl. Pfad.
Alternativ kann man natürlich auch einfach alle Zeilen in fester Reihenfolge speichern
und jeweils das Level der Einrückung dazu. (wenn diese Werte stimmig sind, ergibt sich ein schöner Tree)