Ich kenne mich jetzt grad nicht mit dem Treeview aus (lange nicht mehr
VCL programmiert, in der Uni brauchen wir C ...) aber:
Du musst den Baum von oben nach unten aufbauen. Du nimmst dir also ein Element herais, und hangelst dich anhand der ParentID (oder was du da hast) bis zum obersten Element. Dann suchst du alle, die dieses Element als Parent angeben und hängst sie dran. Dann gehst du rekursiv vor. Dann hast du den gesamten Baum wieder beisammen.
Um eine effiziente Suche hinzubekommen, könntest du die Menge (beim speichern) sortieren, und dann eine BinarySearch drüberlaufen lassen, sonst suchst du dich bei vielen Elementen ja zu tode