Ну, с любым деревом, я чувствую, что вы должны рассматривать узлы как равные, поскольку любой узел может содержать подносы (включая подузлы). Имея это в виду, для большинства деревьев я, как правило, принимают родитель -> ребенок подход, например:
пользователя Таблица:
ID ParentID Name
1 0 Joe
2 0 Sally
3 2 Jim
Теперь, в этой таблице, Джо & Салли являются корневой уровень, в то время как Джим - ребенок (сотрудник в этом случае) Салли. Это может продолжаться, с другими пользователями, являющимися дочерними пользователями, которые являются самими собой, детьми других и т. Д. ...
Преимущество этого подхода в том, что вы делаете всех пользователей равными в глазах дерева управления , Вам не понадобятся индивидуальные коллекции объектов для каждого конкретного уровня или сложная логика для определения типов пользователей и ввода их в правый узел. Если вам нужно сортировать их вручную, все, что вам нужно, это простая рекурсивная функция для проверки родителей для детей на основе их идентификатора (с 0 в качестве корня в этом примере).
Что касается фактической реализации, по крайней мере в ASP.NET, я бы предложил обратиться к использованию TreeView, HierarchicalDataSourceControl и HierarchicalDataSourceView. Вместе эти три объекта позволяют вам быстро создавать деревья данных, а используемые шаблоны довольно общие, поэтому вы можете адаптировать их для использования будущих объектов данных.
Я думаю, вам нужно будет объяснить больше о том, чего вы хотите. По крайней мере, мне это не ясно. – ath88
Вы должны, вероятно, уточнить утверждение _ «мы хотим, чтобы операции над деревом были эффективными» _ – PengOne