堆的数组表示中堆中子节点的索引是什么 在我的讲义和in this article
中以2k
和/或2k+1
但是在数组中索引从0开始,而不是1对吗?
因此,节点k的子节点不应为2k+1
和/或2k+2
答案 0 :(得分:1)
按照一般约定array indices usually start from 0
。所以在这种情况下,根被分配第0个节点。然后子节点被视为2k+1
和2k+2
; < / p>
但是,即使在文章中他们已经明确提到了
树的根[A] 并给出节点的索引i,索引为 可以计算其父母,左孩子和右孩子
PARENT (i)
return floor(i/2)
LEFT (i)
return 2i
RIGHT (i)
return 2i + 1
因此,根据文章,它应该是2k
和2k+1
。如果将根视为数组的索引0,那么子节点的索引将为2k+1
和2k+2
;
答案 1 :(得分:0)
如果索引从0开始,则为2k+1
和/或2k+2
。
如果它们从1开始,则为2k
和2k + 1
。