ヒープ(Heap)とは、木構造(特に完全二分木)を利用したデータ構造の一種で、「親ノードの値が、子ノードの値よりも常に大きい(または常に小さい)」という親子関係のルールを木全体で保っている状態のことです。このルールを守ることにより、木の一番上(根)には常に「最大値」または「最小値」のデータが配置されることになります。最大(小)値を素早く取り出す用途に適しています。
「優先度付きのタスク処理システム」において、最も優先度の高いタスク(最大値)をすぐに取り出したい場合にヒープが使われます。根にある最高優先度のタスクをポップし、残りで木を再構築します。
[90] (最優先タスク)
/ \
[85] [70]
/ \
[10] [35]
※どのノードを見ても 親 >= 子 の関係が成り立っています。