Java 文本表示

Java 文本表示,java,text,treeview,Java,Text,Treeview,我已经建立了一个家谱程序,到目前为止,它允许您将关系添加到节点(母亲、父亲、伴侣和兄弟姐妹)。这允许构建树。好吧,至少要建立链接 我的问题是我必须以文本形式表示树。事实证明,这是非常困难的。我曾想过允许显示特定节点的祖先和后代,但事实证明这很困难,特别是当有两代以上的祖先(曾祖父母及以上)可以显示时 为了让事情变得更清楚,我曾想过使用文件树结构,但在为曾祖父母显示时弄得一团糟 如果有人想看,我可以提供资料来源 我的意思是使用文件结构从两个人开始: e、 g 爷爷奶奶 ---爸爸 ------我

我已经建立了一个家谱程序,到目前为止,它允许您将关系添加到节点(母亲、父亲、伴侣和兄弟姐妹)。这允许构建树。好吧,至少要建立链接

我的问题是我必须以文本形式表示树。事实证明,这是非常困难的。我曾想过允许显示特定节点的祖先和后代,但事实证明这很困难,特别是当有两代以上的祖先(曾祖父母及以上)可以显示时

为了让事情变得更清楚,我曾想过使用文件树结构,但在为曾祖父母显示时弄得一团糟

如果有人想看,我可以提供资料来源


我的意思是使用文件结构从两个人开始: e、 g

爷爷奶奶
---爸爸
------我
------姐妹
---阿姨
------表亲
------表亲

这将是为了向我的父亲(包括我)展示我的祖先。我的问题是如果我的祖父母都有父母会发生什么?我如何用上述结构表示这种关系?我必须让我伟大的祖父母看看,但会有两套!一个给我奶奶,一个给我爷爷。如果你明白我的意思的话,根已经被分成两部分了


我想把“显示祖先”功能限制为只显示上面的两代。这意味着用户可以遍历树,通过选择其父节点并显示其祖先来识别他/她的曾祖父母-但这似乎很费劲,也不是很直观。

以下方法可能会满足您的需要。它将以选项卡式层次结构打印树:

public void printTree(Node root, int tabLevel, PrintStream out){
    for(int i =0;i < tabLevel; i++) out.print("\t");
    out.println(root)
    for(Node n: root.getChildren())
        printTree(n, tabLevel + 1, out);
}

这并没有考虑到家谱的所有复杂性,但它应该提供一个很好的起点。

也许我应该回答你们,而不是回答我自己的问题。哎呀!我想说的是,从逻辑上讲,我对如何显示特定节点的曾祖父母感到困惑。@用户,一个节点本身不会有曾祖父母。一个节点将只有父节点和子节点。因此,要显示节点的曾祖父母,必须显示该节点的父母。然后是父母的父母,然后是他们父母的父母。这有意义吗?
printTree(rootNode, 0, System.out);