0

質問:

次の要素を指定された順序で挿入して、ヒープを作成します。挿入と細流化のたびにヒープを表示します。(ヒープは、最高のキー値を一番上に保つように実装する必要があります。)

5 4 6 7 9 8 1 2 3

ヒープの作成が完了したら、ヒープから各要素を削除します。削除して細流化するたびにヒープを表示します。各ステップで削除された要素を示します。

要素をヒープに挿入する方法は知っていますが、作成する方法はありますか?そして、ヒープから要素を削除する方法が本当にわかりません。

4

1 に答える 1

1

答えにはバイナリ ヒープを想定します。多くの異なるヒープがありますが、これは宿題のように聞こえ、かなり基本的な質問であるため、そこにある最も基本的なヒープについて説明します。

まず、ヒープは空です。

次に 5 を挿入すると、ヒープは次のようになります。

5

次に、一番下に 4 を挿入します。4 は 5 よりも小さいため、親との位置を変更しません。ヒープは次のとおりです。

   5
  /
 4

次に、5 の下に 6 を挿入します (常に左から右に挿入します)。新しく挿入されたノード (6) の値をその親 (5) と比較し、ヒープ プロパティに違反しないように、それらを交換する必要があることに気付きます。

   6
  / \
 4   5

ここで、次の使用可能な場所 (4 の下) に 7 を挿入し、7 > 4 であるため、その親と交換します。次に、7 > 6 として再び交換 (または細流化) し、次を取得します。

    7
   / \
  6   5
 /
4

等々...

于 2012-06-25T08:35:06.880 に答える