Мне нужно нарисовать дерево корпоративной структуры (похожее на семейное дерево) на С#. Все вспомогательные коды есть. Он цветной, интерактивный и причудливый. Единственная проблема - алгоритм, который фактически решает, куда помещать каждый node, дает мне много горя.
На данный момент размеры ящиков равны 100x50, и у меня есть класс под названием StaffNode
, который представляет сотрудника в определенной координате x, y.
Алгоритм просто должен создать List<StaffNode>
с соответствующими x и y.
Это невероятно сложно.
В основном алгоритм рекурсивный по корпоративной структуре, поэтому left- > right, затем top- > down вдоль дерева. Очевидно, что это плохо, если два узла находятся друг над другом.
Я могу придумать несколько алгоритмов, которые могут вызвать что-то вроде этого:
*
o O
o o o o o O
o O O O O O
O
В то время как нечто подобное было бы лучше, так как дерево очень большое, а пространство очень ограничено:
*
o O
o o o o o O
o O O O O O
O
У кого-нибудь из вас раньше было рисовать дерево? Если у вас есть, я уверен, что вы столкнулись со многими препятствиями, которые у меня есть. Какие-нибудь советы? До сих пор я провел целый день.