2013-03-24 57 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