この記事では、スタック、キュー、ツリーに密接に関連する特殊な木のようなデータ構造であるヒープを紹介します。 ヒープは、
ヒーププロパティを維持します:親ノードの値は、常に子供の値に比べて順序付けられます。 主要な概念には、最大ヒープ、ミニヒープ、優先キューが含まれます
キーテイクアウト:ヒープは、ヒーププロパティに付着する木のような構造です。 バリエーションには、Max-Heaps(親≥子供)、Min-Heaps(親≤子供)、および優先キューが含まれます。
SplHeap
ヒープの詳細:SplMaxHeap
SplMinHeap
SplPriorityQueue
最大ヒープは根に最大の価値を置き、親は常に子供よりも大きくなります。ミンヒープは逆です。 PHPのSPLは、これらすべてのタイプのツールを提供します。 最大ヒープの例:ヒープは、しばしばバイナリツリーがバイナリツリーの固有の順序を欠いています。基本操作には、作成、isempty、挿入、および抽出(ルートの削除)が含まれます。 ヒープからルートを抽出すると、
semiheapが去り、再構築が必要です。 これは、最後のノードをルートに移動し、ヒーププロパティが復元されるまで新しいルートを「トリックダウン」することによって行われます。
アレイベースのヒープ実装:
バイナリMax-Heapは、配列を使用して実装できます。 次のPHPコードはこれを示しています:
および
:
<?php class BinaryHeap { protected $heap; // ... (rest of the code as provided in the input) ... } ?>
phpの
およびヒープ管理を簡素化します。 これらのクラスを拡張し、カスタム比較のためにメソッドをオーバーライドします。
SplMaxHeap
SplMinHeap
:
SplMaxHeap
SplMinHeap
はキューのように動作しますが、内部で最大ヒープを使用します。 優先順位ベースのタスクに役立ちます。 優先順位を定義するためにcompare
メソッドをオーバーライドします。 例:
SplPriorityQueue
概要:
よくある質問(FAQ):
提供されるFAQセクションは包括的であり、PHPのヒープに関する一般的な質問に正確に対処します。 変更や追加の必要はありません以上がPHPマスター| PHP開発のデータ構造:ヒープの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。