2013-03-24 53 views
0

我想将minHeap类转换为maxHeap类。我得到了minHeap类的代码,其中一种方法是添加。它看起来像这样:这是一个有效的MaxHeap结构吗?

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

第一节点自动设置为空,这样得到的一切添被放置在节点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?

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

回答

0

是的。如果你的堆被存储,你说它是一个有效的最大堆。最大堆具有属性,即每个节点(根除外)都包含小于或等于其父项的值。你的堆遵守这条规则。

+0

谢谢 - 我虽然这样做,只是想确定。 – 2013-03-24 23:58:21