検索
個人的なメモ、侵入
バイナリ検索は、バイナリ検索とも呼ばれます。
彼は尋ねなければなりませんシーケンシャルストレージ構造そして必要整然とした。
int Search_Bin(SSTable ST,KeyType key)
{
low=1;
high=ST.length;
while(low<=high)
{
mid=(low+high)/2;
if(ST.R[mid].key==key) return mid;
else if(ST.R[mid]>key) high=mid-1;
else low=mid+1;
}
return 0;
}
バイナリ配置ツリー
バイナリソートツリーの特性:左側のすべてのサブツリーはルートノードよりも小さく、右側のすべてのサブツリーはルートノードよりも大きく、サブツリーもバイナリソートツリーです。
ステートメント
typedef struct
{
KeyType key; //关键字域
InfoType otherInfo; //其他数据项
}ElemType;
typedef strcut BSTnode;
{
ElemType data;
struct BSTnode *lchild,*rchild;
}BSTndoe,*BSTree;
インサート
void InsertBST(BSTree &T,ElemType e)
{
if(!T)
{
BSTree S=new BSTree;
S->data=e;
S->lchild=S->rchild=NULL;
T=S;
}
else if(e.key>T->data.key) InsertBST(T->rchild,e);
else InsertBST(T->lchild,e);
}
作成する
void CreatBST(BSTree &T)
{
T=NULL;
cin>>e;
while(e.key!=ENDFLAG)
{
InsertBST(T,e);
cin>>e;
}
}
バランスの取れたバイナリツリー
バイナリソートツリーの検索パフォーマンスはバイナリソートツリーの構造に依存し、バイナリツリーの形状はデータセットに依存します
順序付けされている場合、検索時間の複雑さはO(n)です。構造が妥当な場合、検索時間の複雑さはO(log 2 n)です。実際、ツリーの高さが小さいほど、検索は高速になります。したがって、AVLツリーとも呼ばれるバランスの取れたバイナリツリーが提案されます。
バランスの取れたバイナリツリーまたは空のツリーには、次の特性があります。
(1)左右のサブツリーの深さの差の絶対値が1を超えない
(2)左右のサブツリーもバランスの取れたバイナリツリーです。
バランスバイナリツリーのバランス調整方法
明らかに、ツリーをバランスの取れたバイナリツリーに構築すると、検索効率が向上します。
したがって、アンバランスのバイナリツリーをバランスの取れたバイナリツリーに変換する方法は次のとおりです。
バイナリツリー上のノードのバランス係数(バランス係数、BF)が、ノードの左右のサブツリーの深さの
差として定義されている場合、バランスの取れたバイナリツリー上のすべてのノードのバランス係数は-1しか見つけることができません。 0と1。
バイナリツリー上のノードのバランス係数の絶対値が1より大きい限り、バイナリツリーは不均衡です
BツリーのMオーダーの意味は何ですか?
Bツリーの背景
2番目の検出方法
つづく。。。(2021/1/16)