Du kannst auch mit Objekten und zwei Listen arbeiten.
Dann solltest Du aber statt mit Objekten mit Interfaces arbeiten ... damit gibt es weniger Speicherprobleme.
Wie Himi sagt:
Eine TObjectList<T>.Create(True) und eine andere TObjectList<T>.Create(False) (oder gleich TList<T>) und schon ist der Lachs gegessen.
Interfaces kann man machen, ist aber nicht notwendig für reine Datenobjekte zur Anzeige in der (Virtual)Treeview.