二进制最大堆的中值始终是叶节点吗?

时间:2018-01-14 18:27:08

标签: tree heap binary-heap max-heap

如果我有一个二进制最大堆(一个几乎完整的二叉树具有max-heap属性),那么中值总是一个叶子节点?我已经找到了一些例子,但是没有找到反例 - 尽管这还不足以让我到目前为止正式证明这一点。

即。对于中值为[3]的值集{1,2,3,4,5},树将为:

    5  
   / \
  4   [3]
 / \
2   1

因此,在这种情况下,中位数是叶节点。

1 个答案:

答案 0 :(得分:1)

不,它并不总是一个叶子节点。您可以轻松地重新排列示例来证明这一点。使用这些相同项的另一个有效最大堆是:

    5  
   / \
 [3]  4
 / \
2   1

考虑7个项目的完整最大堆:

       7
   6     [4]
 1   5  3   2

这是一个有效的最大堆。最大的项目位于根目录,并且所有子节点都小于其父节点。

从这两个例子中可以清楚地看出,你不能假设堆中的中位数总是一个根节点。