树状连接的算法?

时间:2018-11-15 16:30:34

标签: java arrays algorithm

问题是我需要创建一个表示一定数量对象的一维数组。 这些对象的组织如图所示。 Link

而且我必须能够知道其中的一个。 对象的数量是唯一给出的。

是否有某种算法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

这种组织通常用于在数组中实现堆:https://www.geeksforgeeks.org/array-representation-of-binary-heap/

您只需按级别顺序将对象放入数组中(首先是前1个,然后是级别2中的2个,然后是级别3中的4个,依此类推)。

假设从0开始建立索引,则 array [i] 中的对象具有子 array [2 * i + 1] array [2 * i + 2]

如果您的数组以 [1] 开头,则 array [i] 中的对象具有子元素 array [2 * i] array [2 * i + 1]