如果我有一个二进制最大堆(一个几乎完整的二叉树具有max-heap属性),那么中值总是一个叶子节点?我已经找到了一些例子,但是没有找到反例 - 尽管这还不足以让我到目前为止正式证明这一点。
即。对于中值为[3]的值集{1,2,3,4,5},树将为:
5
/ \
4 [3]
/ \
2 1
因此,在这种情况下,中位数是叶节点。
答案 0 :(得分:1)
不,它并不总是一个叶子节点。您可以轻松地重新排列示例来证明这一点。使用这些相同项的另一个有效最大堆是:
5
/ \
[3] 4
/ \
2 1
考虑7个项目的完整最大堆:
7
6 [4]
1 5 3 2
这是一个有效的最大堆。最大的项目位于根目录,并且所有子节点都小于其父节点。
从这两个例子中可以清楚地看出,你不能假设堆中的中位数总是一个根节点。