Алгоритм для эффективного рисования деревьев?

Мне нужно нарисовать дерево корпоративной структуры (вроде семейного дерева) на C #. Здесь есть весь дополнительный код. Он цветной, интерактивный и необычный. Единственная проблема заключается в том, что алгоритм, который фактически решает, где разместить каждый узел, доставляет мне много горя.

На данный момент коробки имеют размер 100x50, и у меня есть класс под названием StaffNode , который представляет сотрудника в определенных координатах x, y.

Алгоритму просто нужно создать List с соответствующими значениями x и y.

Это невероятно сложно.

В основном алгоритм является рекурсивным по корпоративной структуре, поэтому слева-> справа, затем сверху-> вниз по дереву. Очевидно, что это плохо, если два узла расположены один над другим.

Я могу придумать несколько алгоритмов, которые могут дать что-то вроде этого:

          *
    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

Кто-нибудь из вас должен был нарисовать такое дерево раньше? Если да, я уверен, что вы столкнулись со многими препятствиями, которые у меня есть. Какие-нибудь советы? Пока что потратил на это целый день.

11
задан user1002358 27 November 2011 в 22:11
поделиться