I need to draw a corporate structure tree (sort-of like a family tree) in C#. All the ancillary code is there. It is colored, interactive, and fancy. The only trouble is the algorithm that actually decides where to put each node is giving me a lot of grief.
For the moment, boxes are 100x50 in size, and I have a class called StaffNode
which represents a staff member at a particular x,y co-ordinate.
The algorithm just needs to create a List<StaffNode>
with the appropriate x's and y's.
This is incredibly tricky.
Basically the algorithm is recursive along the corporate structure, so left->right, then top->down along the tree. Obviously it is bad if two nodes are on top of one another.
I can think of a few algorithms that might produce something like this:
*
o O
o o o o o O
o O O O O O
O
Whereas something like this would be better, since the tree is very large and space is very limited:
*
o O
o o o o o O
o O O O O O
O
Have any of you had to draw a tree like this before? If you have I'm sure you've come across the many hurdles I've got. Any tips? So far I've spent an entire day on it.