Похоже, у вас есть вполне конкретные потребности, поэтому я чувствую, что не будет полного решения, которое бы точно соответствовало вашим требованиям.
Мое первое предложение - использовать базу данных. Он обладает всеми необходимыми мне функциональными возможностями, а также дополнительными бонусами за надежность и высокую скорость работы. Конечно, вам придется написать некоторые из ваших подпрограмм, чтобы обрабатывать добавление / удаление / вставку / редактирование данных и т. Д. Реляционная база данных сможет хранить все ваши отношения между вашими категориями и легко изменять отношения между вашими записями (узлы). Потратьте время, чтобы узнать, как хранить иерархические данные, а затем отношения между вашими узлами. Хорошо спроектированная база данных предоставит вам все особенности вашего проекта.
MySQL бесплатен и очень прост в использовании. Небольшая площадь, но очень быстрая. Посмотрите на эту статью, чтобы вы подумали о том, как древовидные структуры данных могут храниться реляционным способом: Реляционные древовидные структуры данных .
Сказав это, я не уверен, что это то, что вы ищете.
Пример того, как база данных может хранить ваше дерево:
Если база данных невозможна, тогда я бы посоветовал вам написать свой собственный класс. Только вы знаете, как ваши данные управляются и объединяются. Следовательно, вы можете написать точную функциональность, которой нужно манипулировать и обрезать дерево. Начните с просмотра TObjectList. Создайте свой объект класса, который хранит данные для каждого узла. Затем вы можете создать список этих объектов для хранения всех ваших узлов. Напишите методы для имитации действий пользователя над вашим деревом, например, Добавление, обновление, перемещение и т. Д. Это может занять некоторое время, но это действительно поможет вам учиться и принесет пользу вам, как разработчику приложений. Задавайте вопросы по ходу дела, когда застреваете.