1

Haskell でヒープ ツリーを使用してプライオリティ キューを実装する必要があります。次に例を示します。

リストが与えられた場合:[3,2,7,8,4,1,9]

3 is the  main root
2 is its left leaf
7 is its right leaf

8 is the left leaf of 2
4 is the right leaf of  2

1 is the left leaf of 7
9 is the right leaf of 7

ツリーを heapifiy したい場合は、次のようになります。

7 > 3 so we exchange them
8 > 2 we exchange them
8 > 7 we exchange them
9 > 3 we exchange them
9 > 8 we exchange them

次のようなリストで終了します。[9,7,8,2,4,1,3]

And9は、キュー内で最も高い番号 (優先度) を持つ要素です。

これを行う必要があります:

  • insert h e要素eをヒープに挿入しますh(最後の位置に)
  • delete h優先度が最も高い要素を削除します (この例では 9)。
  • heapify hツリーをヒープ化します。

しかし、私の問題は heapify 関数です。どこから始めればよいかさえわかりません。だからこそ、手がかりやアドバイスを求めています。

4

1 に答える 1