如何用一维数组表示非二叉树?

时间:2019-06-06 21:26:19

标签: arrays algorithm data-structures tree

使用1D数组表示非二叉树的方法

当节点数量有限且数量较少时,可以使用一维数组表示二叉树 而索引为i的节点在索引2 * i和2 * i + 1处有两个子节点。 如何以相同的方式使用一维数组存储非二叉树(当一个节点有两个以上的子节点时)? 我想到了使用这种方式来存储最多3个儿子的树,其中节点的索引为i,其儿子分别为3 * i,3 * i + 1和3 * i + 2。剩下很多空的(未使用的)数组单元。 有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

这是一种将所有节点打包为一维数组的解决方案。

每个节点由可变数量的数组单元组成。节点的第一个单元格是其子节点的计数C。接下来的C单元包含数组中其子节点的第一个单元的索引。

例如:

Indexes: 0 1 2 3 4
Values:  2 3 4 0 0

是具有3个节点的图; 1个节点具有2个子节点。第一个节点位于单元索引0处,其值为2,即其子节点数。接下来的2个值是子节点3和4的索引。索引3和4的单元格的值为0,因为它们没有子节点。

答案 1 :(得分:-1)

您可以使用树遍历算法来创建树的数组表示形式。例如,使用有序遍历树以得到唯一的数组表示形式。

详细了解树遍历算法here。请注意,您不能使用后置订单和预订订单来执行此任务,因为它们不会创建唯一的表示形式(请参见this post)。

相关问题