查找堆的父级和子级的算法是:
母公司:i/2
留守儿童:2岁
右孩子:2i+1
我试过在纸上画出数组的表示,但我不确定我是否完全凭直觉得到它。

最佳答案

关键是元素是以广度优先的方式枚举的,并且索引是基于1的(它们从1开始,而不是0)。

    1
   / \
  2   3
 / \ / \
4  5 6  7

以3为例
2*3   = 6   left child
2*3+1 = 7  right child

6和7除以2等于3,至少在做整数除法的语言中是这样。
继续以这种方式编号,你的插管就应该开始了一般来说,乘以2总是得到左孩子的索引。右子项是左子项的后续项(+1)整数除以2的工作原理是相同的(它“丢弃”了余数)

10-04 12:03