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 alg
You could use an iterative approach. Lay out the tree using something like the first example you used above. Then move nodes or subtrees closer to each other, while making sure no constraints are violated (eg: Nodes cannot overlap, child nodes must be below parent nodes).
Pros:
Cons:
There are many good algorithms for drawing trees, each of which shows off some different property of trees. If you want to show off a hierarchy, there is this code for WPF that draws hierarchies. For a more general discussion of how to draw graphs and trees, considering looking at these lecture slides detailing many such algorithms. There's also these excellent slides covering similar material.
Hope this helps!