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 関数です。どこから始めればよいかさえわかりません。だからこそ、手がかりやアドバイスを求めています。