主な違い:コンピュータでは、バイナリツリーはデータを格納し、ユーザーがアルゴリズム時にデータにアクセス、検索、挿入、削除できるようにするツリーデータ構造です。 BツリーとB +ツリーの違いは、Bツリーではキーとデータを内部ノードとリーフノードの両方に格納できるのに対し、B +ツリーではデータとキーはリーフノードにしか格納できないことです。 。
二分木は、磁気ディスクなどの直接アクセス二次記憶装置上でうまく機能するように設計されたバランスのとれた探索木である。 Rudolf BayerとEd McCreightはBツリーの概念を発明しました。
Bツリーは一般化された二分探索木で、どのノードにも3つ以上の子を持つことができます。 Bツリーの各内部ノードには、いくつかのキーが含まれています。 これらのキーは値を分離し、さらにサブツリーを形成します。 Bツリーの内部ノードは、事前定義された範囲内に配置された可変数の子ノードを持つことができます。 それぞれのノードからデータが挿入または削除されると、子ノードの数が変化します。 事前定義された範囲を維持するために、内部ノードを結合または分割することができます。 Bツリーでは、事前定義された範囲を維持する必要があるため、ある範囲の子ノードが許可されます。
Bツリーは、他の自己均衡検索ツリーとは異なり、頻繁にリバランスする必要はありません。 これらのツリーのノードは常にいっぱいではありません。 したがって、これらの木ではスペースが不要に消費され、スペースが無駄になります。 子ノードの数の下限と上限のみが通常、特定の実装に対して固定されています。 たとえば、2-3 Bツリー(多くの場合、単に2-3ツリーと呼ばれる)では、各内部ノードに含まれる子ノードは2つまたは3つだけです。
さらに、Bツリーは、大きなデータブロックを読み書きするシステムに最適化されています。 データベースやファイルシステムでよく使われています。 Bツリーでは、すべてのノードがルートノードから同じバランスの深さに保たれます。 これらの深さは、要素数が増えるにつれてゆっくりと増加します。 これにより、すべてのリーフノードがルートからさらに離れたもう1つのノードになります。 さらに、Bツリーは、データにアクセスするのにかかる時間に関して、他の実施形態と比較したときにより有利である。
B +ツリーはノードを持つn配列ツリーで、ノードごとに多数の子で構成されています。 ルートは、リーフまたは3つ以上の子を含むノードです。 B +ツリーは、ルート、内部ノード、およびリーフで構成されています。
B +ツリーはBツリーと同じです。 唯一の違いは、B +ツリーの下部にリンクされたリーフが追加された追加のレベルがあることです。 また、Bツリーとは異なり、B +ツリーの各ノードにはキーのみが含まれ、キーと値のペアは含まれません。
さらに、バランス係数またはB +ツリーの次数は、ツリー内の内部ノードの容量、つまりそれらが持つことができるノードの数を測定します。 ノードに対する実際の子の数は、内部ノードに対して制限されています。 ただし、ルートは2つ以上の子を持つことが許可されているため例外です。 たとえば、B +ツリーの順序が7の場合、各内部ノード(ルートを除く)は4から7個の子を持つことができます。 B +ツリーの主な価値は、効率的な検索のためにデータをブロック指向のストレージコンテキスト、特にファイルシステムに格納することにあります。
B +ツリーの主な価値はデータの保存と維持にあり、データが失われることはありません。 このアプローチは、特にブロック指向のストレージコンテキストと特定のファイルシステムに適用されます。 B +ツリーの一番下のインデックスブロックである葉は、リンクリストで互いにリンクされていることがよくあります。 したがって、これにより、ブロックを介した範囲照会または順序付き反復がより単純で効率的になります。 さらに、B +ツリーでは占積率が無駄になりません。 B +ツリーは、効率的な住宅データ構造フォーマットを提供します。これにより、アクセスと格納が簡単になります。 B +ツリーは、データが通常ディスクに存在するデータベースシステムインデックスとして特に役立ちます。
BツリーとB +ツリーの比較
Bの木 | B +ツリー | |
短いウェブの説明 | ABツリーは、すべての端末ノードがベースから同じ距離にあり、すべての非端末ノードがnから2 nの間のサブツリーまたはポインタを持つツリー形式の情報格納および検索のための組織構造です。 nは整数です。 | B +ツリーは、変数を持つn配列ツリーですが、多くの場合、ノードごとに多数の子を持ちます。 B +ツリーは、ルート、内部ノード、およびリーフで構成されています。 ルートはリーフまたは2つ以上の子を持つノードのいずれかです。 |
としても知られている | バランスのとれた木。 | Bプラス木。 |
スペース | に) | に) |
サーチ | O(log n) | O(log b n) |
インサート | O(log n) | O(log b n) |
削除する | O(log n) | O(log b n) |
ストレージ | Bツリーで、内部ノードまたはリーフノードに格納されている検索キーとデータ。 | B +ツリーでは、データはリーフノードにのみ格納されます。 |
データ | 3つのストアのリーフノードは、実際のレコードではなくレコードを指します。 | ツリーのリーフノードには、レコードへのポインタではなく実際のレコードが格納されています。 |
スペース | これらの木はスペースを無駄にする | そこの木はスペースを無駄にしません。 |
葉ノードの機能 | Bツリーでは、リーフノードはリンクリストを使用して格納できません。 | B +ツリーでは、リーフノードデータは順次リンクリストに並べられます。 |
検索中 | この場合、リーフノードにデータが見つからないため、Bツリーでの検索は困難になります。 | ここでは、すべてのデータがリーフノードにあるため、B +ツリー内の任意のデータの検索は非常に簡単です。 |
検索機能 | このBツリーでは、検索はB +ツリーと比べてそれほど簡単ではありません。 | ここでB +ツリーでは検索が簡単になります。 |
冗長鍵 | それらは冗長な検索キーを格納しません。 | それらは冗長な検索キーを格納します。 |
アプリケーション | それらは古いバージョンであり、B +ツリーと比べてそれほど有利ではありません。 | 多くのデータベースシステムの実装者は、B +ツリーの構造上の単純さを好みます。 |