首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >家谱显示

家谱显示
EN

Stack Overflow用户
提问于 2011-02-19 06:24:28
回答 2查看 1.7K关注 0票数 4

我正在创建一个家谱程序。我的问题是如何定位节点?最初,我将根定位在屏幕的中心,如果它是一棵完美的二叉树,并且级别非常少,它就会工作得很好。然而,情况往往并非如此。这是一个样本树:-

代码语言:javascript
复制
            A
        B       C
    D   E   F   I   J
K   L               N   O

正如您所看到的,主要的问题是节点的位置。如果一个节点有多个子节点,并且它的相邻节点也有多个子节点,则它们倾向于重叠。(主要问题)I是使用Silverlight中的画布对节点进行绝对定位。如果您不是Silverlight开发人员,那么您可能不会为Silverlight和Canvas部分而烦恼。我只需要如何定位节点的逻辑。

树的高度可以很容易地通过知道树的总数量来计算,但是树的宽度是困扰我的。如何计算树的宽度(画布的总宽度)

有人能给我一些关于如何设置画布宽度以及什么逻辑将完美地用于节点定位的一般性指导吗?

注意:-,我没有要求整个算法,这也不是我的作业。我已经有算法和数据库了。我只需要节点的定位部分的指南。

(预先谢谢:)

EN

回答 2

Stack Overflow用户

发布于 2011-02-19 06:33:12

如果您为此树的任意节点实现了一个函数:width(node),则很容易定位每个节点。

这个函数可以递归地定义:

  • ,对于高度为1的树,这正是这个节点的长度,

  • ,对于大于1的树,这是该节点的所有直接子节点的长度之和(加上这些节点之间的一些空格)
票数 5
EN

Stack Overflow用户

发布于 2011-02-19 06:29:08

我建议放大和缩小功能,以消除GUI房地产的混乱。

一个有很多孩子的节点可以分组,一个特殊的图标来表示它可以放大到下一个级别,我觉得随着家庭的成长,用户一开始就可以获得大图片,然后也可以放大到他想要的任何分支。

从谷歌地图的UI中获取线索,可能会有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5049256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档