二分ヒープ

「親は子より大きい」を保つ木 ── 常に最大値が根にあるデータ構造を、木と配列の両方で見ます。

0
木としてのヒープ
配列としてのヒープ(同じものを 1 次元で)
取り出した最大値(大きい順に出てくる)
二分ヒープ(最大ヒープ)は、どの親も自分の子より大きい完全二分木です。 だから根が常に全体の最大値。優先度つきキューやヒープソートの土台になります。
木はそのまま 配列で表せます ── 添字 i の子は 2i+12i+2、親は (i−1)÷2
挿入は「末尾に足して親と比べ、大きければ上へ(sift-up)」、最大値の取り出しは「根と末尾を入れ替えて末尾を削り、 根を子と比べて下へ(sift-down)」。木と配列が連動して動く様子を見てください。

いま何をしている?

ここがポイント