2012-02-15 11 views

答えて

8

Wikipediaから、次の例を考えてみましょう: enter image description here

この配列表現は次のようになります。

[1, 2, 3, 17, 19, 36, 7, 25, 100] 

今「変更」最小から最大へのヒープが、再配置なし新しい要素 "25"を挿入します。配列の位置は9になり、親ノードは位置4で "19"になります。

挿入後、新しい項目を親と繰り返し比較してヒーププロパティを保証する必要があります(現在、max-heap => parentは子)。したがって、ルートノードになるまで "25"を "19"、 "2"、 "1"にスワップする必要があります。

今のmax-ヒープ特性は、例えば、ではなく、他のノードのために、(その子は確かに小さい)ルートノードのために保持しています"3"は引き続き "7"の親であり、最大ヒープ条件に違反します。

結論:説明することは、最小ヒープを最大ヒープに変更することはありません。

6

あなたは、ヒープをネジだけでしょう。

あなたは再度heapifyする必要があります(これは時間O(N)で行うことができます)。

+0

笑... "ネジ" ヒープ:D – Spandan

関連する問題