【问题标题】:Family tree structure [closed]家谱结构[关闭]
【发布时间】:2020-04-08 16:16:34
【问题描述】:

我想使用树数据结构用 C 语言创建家谱结构。二叉树使用两个指针(左和右),但为了表示家谱,我需要更多的指针,因为父母可以有更多的孩子,但我不知道有多少,所以我不能使用任何最大值。我需要知道如何动态地表示孩子。

struct {
//data
  array of pointers
 }

【问题讨论】:

  • 使用 c++ 代替 C 并使用向量
  • 请参阅此内容并尝试编辑您的问题以更清楚:stackoverflow.com/help/how-to-ask。另外,你试过什么?您是否查看过如何实现树形数据结构? C有大量资源:geeksforgeeks.org/binary-tree-set-1-introduction
  • 二叉树是不够的。我只想问如何动态实现父母的孩子(有些可以有2个孩子,有些可以有4个孩子)
  • 我不会使用树形数据结构来表示家庭关系。我会使用我在stackoverflow.com/a/56537069/56778 中描述的关系列表。为什么?因为现实世界中的家庭关系比等级关系更具关系性。

标签: c data-structures


【解决方案1】:

通常,您通过让左节点成为当前节点的子节点而右节点成为兄弟节点来表示二叉树中的父子兄弟关系:

                p
               / \
              c   s
               \
                s
                 \
                  s
                 / \
                c   s

所以你有一个父节点有一个兄弟节点和四个子节点,一个子节点有 3 个兄弟节点但没有子节点,其中一个兄弟节点有一个子节点,等等。

这不是制作家谱的最好的方法,但它应该会给你一些想法。

猜你喜欢
  • 1970-01-01
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2015-06-29
  • 1970-01-01
相关资源
最近更新 更多