【问题标题】:Best way of implementing a family tree in Java using a data structure使用数据结构在 Java 中实现家谱的最佳方法
【发布时间】:2015-12-10 01:28:16
【问题描述】:

https://softwareengineering.stackexchange.com/questions/285418/name-of-data-structure-thats-tree-like-with-multiple-root-nodes

我偶然发现了上面有人回答了关于实现具有> 2个节点的树的问题,我只是想了解如何最好地实现具有两个以上子节点的父节点的家谱。我看过二叉树,但由于它们只能有两个子节点,因此决定在其他地方进行研究。我还研究了使用森林数据结构来实现由具有 0 多个子节点的多个节点组成的家族谱系树。可能会使用森林树,但是从我搜索并发现的大多数表示中,它看起来类似于一个脱节的集合,但我不希望父节点已经注定没有孩子。 我希望我所说的有意义。 任何人都能够提供任何建议或 cmet 将不胜感激。

【问题讨论】:

  • 取决于您要执行的关系查找:您希望给定父母的孩子,给定孩子的父母,两者兼有,都不希望,还是其他?
  • 另外:你能提供另一个问题的链接吗?
  • 感谢您的意见!我想生成某种数据结构实体的树,它包含有关节点的信息并拥有超过 2 个子节点,这与二叉树结构不同。我希望能够通过其父节点访问子节点,反之亦然,通过它表示树 gui,显示每个人的出生/婚姻/死亡记录。一个人显然由一个可能有 0->2 个兄弟姐妹的单个节点表示。也许进一步实施来自一位父母的兄弟姐妹。我想使用 ArrayList 以外的数据结构。
  • 这里是森林数据结构的链接:programmers.stackexchange.com/questions/285418/…
  • 请将问题链接添加到您的问题中。

标签: java tree family-tree


【解决方案1】:

如果您想表示一个子列表,只需在您的 Person 类中包含一个 Person 实例列表:

class Person {
  List<Person> children;
  Person father;
  Person mother;
}

然后您可以将任意数量的人员添加到子列表中。

我还在此处添加了父亲和母亲字段,以便您导航到父母。

一个提示:对您的建模非常彻底。家庭关系有一些容易漏诊的情况,例如采用。 “父亲”和“母亲”几乎可以肯定过于简单化了。

【讨论】:

  • 感谢您的建议,但是如果我想使用树结构而不是 ArrayList 怎么办?这正是我对此类项目的观点,可能有一个父母的孩子与另一个父母的另一个孩子是兄弟姐妹,即玛丽和山姆来自一个父亲,他们是同一个父亲,但母亲是不同的。我不太关心收养,尽管我没有考虑过它的真实情况。
猜你喜欢
  • 1970-01-01
  • 2011-08-25
  • 2012-01-19
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
  • 2013-10-23
相关资源
最近更新 更多