ダイナミックなルックアップテーブル

まず、動的な検索の概念:

動的な検索テーブル:テーブル構造動的に生成検出プロセス。
要件:キーの与えられた値については、そのキーワード場合やキーレコードに等しいが、表に成功したリターンのために見て存在する(または削除)、そうでない場合、挿入キーはキーレコードに等しいです。

第二に、動的なルックアップテーブル

  1. 定義されたバイナリ・ソートツリーは
    :バイナリ・ソートツリーまたは空のツリーやバイナリツリーを満たす次のプロパティこと:バイナリ・ソートツリー(バイナリソートツリーまたはバイナリ検索ツリー)定義された
    左のサブツリーがない場合には(1)次いで、ツリー(キー)のすべての左の子ノードの値は、以下のルートノードの値よりも、空;
    (2)右の部分木が空でない場合、右サブツリーの全てのノードの値(キーワード)彼らは、ルートノードの値よりも大きい、
    (3)は、バイナリソートツリーは、それぞれ、左右のサブツリー。
    15-1以下に示すように、この図は、バイナリソートツリーのツリーです。木の左の子ノードの任意の値は、非リーフノードである少ないルートノードよりも、右部分木のノード値は、ルートノードの値よりも大きいです。

ここに画像を挿入説明
図15-1
ノード値は、図1の結果におけるバイナリツリートラバーサル順序:3,12,24,37,45,53,61,78,90,100。
結論:配列を結果として生じるバイナリソートツリーノードのトラバーサル順序どおりに増加するシーケンスであることにより、もし。
2.バイナリ・ソートツリー(BST木)アイデアの検索
アイデアを見つけるためにBSTツリーを:
(1)バイナリ・ソートツリーのキーワード比較与えられた最初のK値のルートを:等しい場合は、成功を見つけます。
(2)キーワードは、以下のツリーの所与の値K BSTルートを超える場合:ノードの左の部分木を検索し続け、
(3)ツリーキーワードのBSTルートより与えられたK値より大きい場合:ツリーの右の子ノードを検索し続けます。
3.バイナリソートツリー加算
(1)検出プロセスとテーブルの秩序構造の順序は、バイナリ検索に類似して高効率を見つけるために、
(2)このバイナリツリートラバーサル順序、キーのシーケンスを順序付けする(すなわち、達成しますソート処理);
(3)検索が失敗した場合は、要素がチェック容易バイナリツリーのリーフノードに挿入することができ、および変更ポインタは、単に要素を動かすことなく挿入または削除します。

第三に、赤、黒の木

  1. 赤黒木の定義

赤黒木(赤黒木)は、自己均衡二分探索木であるコンピュータサイエンスで使用されるデータ構造であり、典型的な使用は、連想配列を達成することです。平衡二分木B(対称バイナリBツリー)と呼ばれる場合には、ルドルフ・ベイヤー1972によって発明されました。その後、1978年に、レオJ. Guibasとロバート・セッジウィックは今修正された「赤黒木。」これより高い検索性能が得られるように特定の操作を介してバイナリ検索ツリー削除操作をバランス挿入および保持の両方の間にブラックツリーとバランスのとれたツリーバイナリ(AVL木)同様に、。それは複雑ですが、その最悪の場合、実行時間も非常に良いですが、実際には非常に効果的ではあるが。これは、挿入を見つけるとO(ログn)の時間、で、削除するために行うnはここに木でできます要素の数。
2.赤黒木の性質
ブラックツリーは二分探索木、各ノードの属性を持つ色または赤色または黒色です。次のように我々は、追加の要件を追加した任意の有効な赤黒木のために必須の一般的な要件外部バイナリ検索ツリーで:
1.自然とノードが赤または黒です。
2.ルート・ノードの性質は黒色です。
プロパティ3各リーフノード(NILノード、空のノード)は黒です。
各ノードの2つのつの子ノードの4つの特性は黒赤色です。(各リーフから二つの連続した赤のルートノードへのすべてのパス上にいない)
自然5は、各パスのすべてのリーフへの任意のノードから黒のノードの同じ番号が含ま。
長い可能な最短パスなどとして倍以上のルートからリーフまでのできるだけ長いパス:これらの制約は赤黒木のキーの自然を余儀なくされました。このツリーの結果とほぼバランスされています。そのような挿入、削除および必要な最悪の場合の時間の値を見つけるなどの操作は、ツリーの高さに比例し、最悪の場合には許容する赤黒木の高さに理論的な上限は、通常とは異なるされており、非常に効率的です二分探索木。これらの機能は、この結果を保証する理由を確認するには、4につながるパスの性質上、2つの隣接する赤のノードを持つことができないことは注目にすれば十分です。最短経路は、最長パスは、赤と黒のノードを交互に有していてもよく、ブラックノードです。最長5すべてのパスがノード自然黒の同じ数を有するので、これは経路が他の経路限り、複数の2倍とすることができないことを示しています。
リーフ・ノードは、データが含まれていませんが、多くのツリーデータ構造を表し、ノードは、一つだけの子供を持つことができます。このパラダイムは、赤黒木で表されることが可能であるが、これは特性およびアルゴリズムの複雑さの一部を変更します。この目的のために、我々は、上記のように、本明細書では「ゼロ葉」または「空(ヌル)葉」を使用し、それだけで、ツリーのこの端部に作用することを示すデータが含まれていません。これらのノードは、多くの場合、木矛盾する場合は、上記の原理、実際にはない場合、その結果、図では省略されています。この結論に関連しては、1つまたは2つの空の葉かもしれないが、すべてのノードは、2人の子供を持っているということです。
ここに画像を挿入説明

  1. 用語

赤黒木は、コンピュータサイエンス、デジタルブロックにおけるそのようなA構造内のデータを編成するために使用される特定のタイプの二分木です。すべてのデータブロックがノードに格納されています。これらのノードは、ノードの機能は常に開始位置であるとして働き、それは我々がrootまたは根を呼び出し、任意のノードの息子ではありません。それはそれが接続され、他の2つのノード「息子」まであります。すべての自身の息子の息子を持っている、というようにすることができたの。したがって、ツリー内の他のノードに接続するルート・パスが存在します。ノードが息子を持っていない場合は、直感的に、それは木の端にあるので、我々は、リーフノードと呼びます。サブツリーは、部分自体がツリーとして扱われるツリーの特定のノードから延びていてもよいです。赤黒木において、葉はヌルまたは空であると仮定されます。赤黒木はバイナリ検索ツリーであるため、比較ノードのそれらの各値は、より大きいまたはその左サブツリー内のすべてのノードに等しい、未満であるか、その右サブツリー内のすべてのノードに等しくなければなりません。すぐに、この操作をするとき、赤、黒の木を確認するために、ツリーで与えられた値を見つけることができます。
4.は
赤黒木とAVL木が同じ挿入時間、削除時間であり、可能な限り最高の最悪の場合の保証を提供するための時間を見つけます。彼らは他のデータ構造を持っているように、これは彼らがそのようなリアルタイムアプリケーションなどの時間に敏感なアプリケーションでは、貴重な(リアルタイムアプリケーション)で、建設業の値は最悪の場合のセキュリティを提供しますだけではなく、例えば、計算幾何学で使用するために多くのデータ構造は、赤、黒の木に基づくことができます。
赤黒木はまた、彼らは、最も一般的な永続データ構造である関数型プログラミングにおいて特に有用であり、それらが連想配列のセットを構築するために使用され、彼らは、変異前のバージョンの後に残ります。O(ログn)の時間に加えて、各挿入のための赤黒木のバージョンを長時間持続または削除空間はのO(ログn)のために必要とされます。

リリース8元の記事 ウォンの賞賛1 ビュー140

おすすめ

転載: blog.csdn.net/wxlwxllxw/article/details/105158282