我已经构建了一个家族树程序,到目前为止,它允许您添加与节点(母亲,父亲,伴侣和兄弟姐妹)的关系。这允许构建树。至少要做出的链接。
我的问题是我必须以文本方式表示树。事实证明这非常困难。我想允许显示特定节点的祖先和后代,但这被证明是困难的,特别是当有超过两代显示祖先(伟大的祖父母及以上)。
为了让事情变得更清楚,我想到了使用文件树结构,但在为伟大的祖父母展示时陷入了混乱。
如果有人想看,我可以提供来源。
我的意思是使用文件结构与一对人开始: 例如
GRANDAD& GRANDMA
--- DAD
------ ME
------ SISTER
---姨妈
------ COUSIN
------ COUSIN
这是为了让我的祖先在我爸爸身边(包括我)展示。我的问题是如果我的祖父母都有父母会怎么样?我如何用上述结构表示这种关系?我必须展示我的曾祖父母,但会有两套!一个给我奶奶,一个给我爷爷。如果你看到我的意思,根就被分成了两个......
我虽然限制'显示祖先'功能仅显示2代以上。这意味着用户可以遍历树并通过选择他们的父节点并显示他们的祖先来识别他/她的曾祖父母 - 但这看起来很费力且不太直观。
答案 0 :(得分:0)
以下方法可以做你想要的。它将以选项卡式分层结构打印树:
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);
这并没有考虑家谱的所有复杂性,但它应该提供一个好的起点。