0

minHeapクラスをmaxHeapクラスに変換しようとしています。minHeapクラスのコードが与えられました。その1つのメソッドはaddでした。次のようになります。

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ですか?

木のような構造を見せようとした私のひどい試みについてお詫びします。

4

1 に答える 1

0

はい。あなたが言うようにあなたのヒープが保存されているなら、それは有効な最大ヒープです。Max-Heapには、すべてのノード(ルートを除く)にその親以下の値が含まれるというプロパティがあります。あなたのヒープはこのルールに従います。

于 2013-03-24T23:31:36.533 に答える