这是一个有效的MaxHeap结构吗?

时间:2013-03-24 22:52:09

标签: java tree heap min-heap max-heap

我正在尝试将minHeap类转换为maxHeap类。我得到了minHeap类的代码,其中一个方法是添加。它看起来像这样:

while (index > 1 && getParent(index).compareTo(newElement) > 0)

第一个节点自动设置为null,因此添加的所有内容都放在节点1之后。已经陈述的代码给出了minHeap结构。因此将其更改为maxHeap,我只需将比较器符号翻转为:

while (index > 1 && getParent(index).compareTo(newElement) < 0)

我输入的项目以整数值存储。按插入顺序,它们是:

3
7
8
10
6
1
9
2

在minHeap结构中,它们存储在如下的节点中:

            1
       2         3
    6     7   8     9
 10

在maxHeap结构中,更改符号会将它们存储起来:

           10
      8           9
   2     7     3     6
 1

请注意它们不再与minHeap结构中的顺序相同。这有关系还是有效的maxHeap?

为我显示树状结构的可怕尝试道歉。

1 个答案:

答案 0 :(得分:0)

是。如果正在存储堆,就像你说的那样,它是一个有效的Max-Heap。 Max-Heap具有每个节点(根除外)包含小于或等于其父节点的值的属性。你的堆遵守这条规则。