2009-11-04 130 views
1

嗨,我正在处理一个问题,并可以做一些帮助,我在C#工作。树像数据结构

我想要做的就是创建一个数据结构如下:

我需要一个页面上的X和Y坐标布局了项目。现在的实际布局不是问题,更多的是有一套有效的坐标。

我列表中的每个项目可以有多个父母和多个孩子,其中起始项目没有父母,将其定义为开始元素。

现在我所需要做的就是获得每个元素的坐标,以便一切都正确定位,父母以上的孩子处于中心位置。

如果一个元素只有一个孩子,那么如果父母有多个孩子,那么孩子被放置在父母下方的同一个x坐标下,那么孩子被放置在相等的空间上,父母需要在孩子的上方中间等于两条等长线连接到父母的两个孩子。

另外一个元素也可以有多个级别的父母。

如果任何人有任何想法或建议,我有一个图形文件,我想要给你一个更好的例子。让我知道如果你感兴趣,我也可以给你发一封邮件。

谢谢

+2

什么是你正在努力的实际问题?或者你只是想让别人为你写代码?这个问题看起来像一个规范。 – 2009-11-04 09:43:46

+0

对不起,我有问题,居中父母的元素,因为有时你需要移动基于子节点的行上的元素,这个重新定位可以影响列表中的其他项目,所以然后他们需要重新定位和它很难知道如何重新定位一切基于这个元素。 我有一个很长的查询确实有创建这种数据结构,但它有时间隔不正确,我不能居中所有的节点。我有我想要做的事,如果这会帮助你的形象? 谢谢Irfan。 – Iffy 2009-11-04 09:53:22

回答

1

我认为这是不可能的,没有进一步的限制数据。例如,数据可能包含一个循环,在这种情况下,父母被吸引到高于孩子的状态是不可能的。

我能想到的算法,做您所需要的树状图:

  1. 从底部到顶部计算所需的宽度为元素:
    • ,对于叶节点是1
    • 它是一个节点T N * X,即具有n子节点,x是最宽子
  2. 布局从顶部图形以底部无线的宽度尊重节点的计算宽度
+0

感谢您的回复Ziggystar,但我忘了提及每个元素的宽度是固定的。此外,底部可能没有最大数量的元素,因为这是它的不同树状结构,其中一个中间层级可能占用最多的空间关于节点数量或仅在节点上的最小值和最大值节点。 – Iffy 2009-11-04 10:36:00