我已经构建了一个家谱程序,到目前为止,它允许您添加与节点(母亲、父亲、伴侣和 sibling )的关系。这允许构建树。至少要建立链接。
我的问题是我必须以文本方式表示树。事实证明这是非常困难的。我想过允许显示特定节点的祖先和后代,但这被证明很困难,特别是当显示祖先的代数超过两代时(曾祖 parent 及以上)。
为了让事情更清楚,我考虑使用文件树结构,但在为曾祖 parent 显示时陷入困惑。
如果有人想看的话我可以提供来源。
<小时/>我的意思是使用文件结构从两个人开始: 例如
爷爷和奶奶
---爸爸
------我
------姐姐
---阿姨
------表弟
------表弟
这是为了向我父亲展示我的祖先(包括我)。我的问题是,如果我的祖 parent 都有 parent 怎么办?我如何用上述结构来表示这种关系?我必须给我的曾祖 parent 看,但会有两套!一份给我奶奶,一份给我爷爷。如果你明白我的意思的话,根就被分成了两部分......
我考虑将“显示祖先”功能限制为仅显示 2 代以上。这意味着用户可以遍历树并通过选择其父节点并显示其祖先来识别他/她的曾祖 parent - 但这似乎很费力且不太直观。
最佳答案
以下方法可能会满足您的要求。它将以选项卡式层次结构打印一棵树:
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);
这并没有考虑到家谱的所有复杂性,但它应该提供一个很好的起点。
关于java - 文本表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4588688/