堆的子节点

时间:2014-06-25 16:22:42

标签: data-structures heap

堆的数组表示中堆中子节点的索引是什么 在我的讲义和in this article

2k和/或2k+1

的形式给出

但是在数组中索引从0开始,而不是1对吗? 因此,节点k的子节点不应为2k+1和/或2k+2

2 个答案:

答案 0 :(得分:1)

按照一般约定array indices usually start from 0。所以在这种情况下,根被分配第0个节点。然后子节点被视为2k+12k+2; < / p>

但是,即使在文章中他们已经明确提到了

  

树的根[A] 并给出节点的索引i,索引为   可以计算其父母,左孩子和右孩子

 PARENT (i)
     return floor(i/2)
 LEFT (i)
     return 2i
 RIGHT (i)
     return 2i + 1

因此,根据文章,它应该是2k2k+1。如果将根视为数组的索引0,那么子节点的索引将为2k+12k+2;

答案 1 :(得分:0)

如果索引从0开始,则为2k+1和/或2k+2。 如果它们从1开始,则为2k2k + 1