Java树与前身和后继者

时间:2016-05-30 11:30:50

标签: java tree

我正在尝试找到一个具有前驱和后继的树的实现。例如,我们所拥有的家谱 - 选定的联系人(根) - 他/她的父母,祖父母等 - 他/她的孩子,孙子等 理想情况下,它看起来如下:

GF1  GM1   GF2  GM2  
    F         M  
        Root  
    S         D  
GS1   GD1  GS2   

,其中 GF - 盛大的父亲 GM - Grand Mother
F - 父亲 M - 母亲 S - 儿子 D - 女儿
GS - Grand Son
GD - 大女儿

我找到了几个树实现,但没有一个允许像上面那样绘制层次结构。

任何帮助将不胜感激。

感谢。

2 个答案:

答案 0 :(得分:0)

我认为二叉树应该可以为你做好(假设所有节点最多只有两个孩子 - 男性和女性)。

此外,在为树设计抽象Node时,您可以添加指向左右父母(即母亲和父亲)的指针,以及指向左右儿童的指针。

class Node {
    Node mother;
    Node father;
    Node son;
    Node daughter;
}

请注意,在向树中添加Node时,您不仅应该更新当前节点中为其添加新的后继者/前任者的引用,而且应该添加当前节点的引用作为后继者/前任也是。

这将允许您从选定的(根)节点上下导航。

答案 1 :(得分:0)

您需要一个自定义窗口小部件,在任何情况下都只是Table

如果您知道Tree只是一个简单的Table实现,您可以创建自定义表并装饰是树

table representing a tree

所有的孩子/父母都根据深度缩进,所以父母的深度为1,parent.parent的深度为2,同样适用于儿童。

每当一行有条目时你可以(应该)绘制树符号,当列等于节点深度时它是+符号,或者当深度比深度深时为|行。

不幸的是,我知道没有这样做,所以你必须自己做。如果您在实现表和/或表模型时遇到问题,请随意提出另一个问题!