我正在创建一个家谱程序。我的问题是如何定位节点?最初,我将根节点定位在屏幕中心,如果它是完美的二叉树并且级别很少,则可以正常工作。然而,这通常不是情况。以下是一个示例树:
A
B C
D E F I J
K L N O
正如您所看到的,主要问题是关于节点位置的。如果一个节点有许多子节点,而且它相邻的节点也有许多子节点,它们往往会重叠。(主要问题)我正在使用Silverlight中的Canvas绝对定位节点。如果您不是Silverlight开发人员,则可能不需要关注Silverlight和Canvas部分。我只需要了解如何定位节点的逻辑。
树的高度可以通过知道树的总层数来相对容易地计算出来,但是树的宽度是困扰我的问题。如何计算树的宽度(画布的总宽度)?
有人能给我一些关于如何设置画布宽度以及哪种逻辑对节点定位效果最好的一般性指导吗?
注意:我不是在要求整个算法,这也不是我的作业。我只需要节点定位部分的指导。
提前感谢 :)