Algorithm 如何以金字塔的方式制作一个N级树,这样每个孩子都可以(不意味着必须)有两个父母?

Algorithm 如何以金字塔的方式制作一个N级树,这样每个孩子都可以(不意味着必须)有两个父母?,algorithm,data-structures,tree,Algorithm,Data Structures,Tree,这个问题可能看起来很简单,答案可能也很简单,但我总是在树型问题中感到困惑。 好的,我想做一棵树,比如: 3 level 0 / \ 4 5 level 1 .. / \ / \ 6 7 8 / \ / \ / \ 9 10 11 12 这些树叫什么?对不起,我是初学者。。 函数可以传递数组[]的整数,或者函数可以接受输入直到N=3(表示有10个节点的级别3)。您也可以用C/C

这个问题可能看起来很简单,答案可能也很简单,但我总是在树型问题中感到困惑。 好的,我想做一棵树,比如:

         3     level 0 
        / \ 
       4   5   level 1 ..
      / \ / \
     6   7   8
    / \ / \ / \
   9   10  11  12
这些树叫什么?对不起,我是初学者。。
函数可以传递数组[]的整数,或者函数可以接受输入直到N=3(表示有10个节点的级别3)。您也可以用C/C++/Java给出解决方案。

鉴于您的需求仅限于遍历,我只需使用数组
a
来实现这一点,该数组将每个级别包含为一个连续的子数组。级别
i
然后出现在条目
L(i-1)
中,直到但不包括
L(i)
,其中
L(n)=n*(n+1)/2
。特别是,
i
th级别上的
j
th值在
a[L(i-1)+j]


只要您始终跟踪
i
j
,您现在就可以轻松地在金字塔中导航。

@MitchWheat编辑。谢谢。维基百科:完整的二叉树(有时是二叉树或严格的二叉树)是一棵树,其中除叶子外的每个节点都有两个子节点。一棵完整的树有时被模糊地定义为一棵完美的树。物理学家将二叉树定义为一棵完整的二叉树,而你所画的甚至不是一棵包含所有这些循环子树的树-graphs@Martin你能建议我用DS来存储上面的内容吗?如果不知道数据结构将如何使用,很难给出任何合理的建议。它会在运行时动态变化吗?您希望能够对其执行哪些操作?我将其作为2D数组进行处理,但要感谢:)具有节点(r,c)=节点(r+1,c)和节点(r+1,c+1)的子节点。另外,如果您不想浪费空间,我使用了指针数组并为其动态分配内存