说您的堆中有[12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
]。您将有12位是最大的父级。 11和10是12个孩子中唯一的孩子,因为他们是所有人中最高的吗?
听起来很明显,但是我的代码看起来正确,并且得到的结果相互矛盾。而不是11和10作为12的子代,我得到11和7。11和7的子代值都比它们低,因此我的代码不想继续对其进行排序。
我的主要问题是,只要7个孩子的价值较低,那么7个可以是12个孩子吗?
是,7
可以是堆树中根的右子,存储从1
到12
(包括)的整数序列。考虑下面的线性数组,用节点位置与其子位置之间的usual dependency表示这棵树:
V = [12, 11, 7, 10, 9, 3, 2, 8, 6, 5, 4, 1]
[Heap属性对于此数组有效,原因是i
范围内的所有[0, 6]
:
V[i] > V[2*i + 1]
V[i] > V[2*i + 2]