資料結構 二叉排序樹

2021-10-07 15:31:43 字數 1197 閱讀 5358

一顆二叉樹,每個節點對應乙個關鍵碼,且每個結點左子樹中所有結點的碼值都小於關鍵碼,右子樹中所有節點碼值都大於關鍵碼值,這樣的樹叫做二叉排序樹。

利用二叉排序樹,可以將目錄表組織成二叉樹的形式,既有順序表那樣較高的檢索效率,又有鍊錶哪有插入刪除靈活的特性。

二叉排序樹的儲存結構使用二叉鍊錶

typedef

int keytype;

typedef

struct nodebstnode;

二叉排序樹構造的演算法描述

對於任意一組資料元素 :

1、令r1為二叉樹的根

2、若r2>r1, 令r2為r1的右子樹的根節點,否則作為左子樹的根節點

3、對於n個結點,依次與前面生成的結點比較以確定輸入結點的位置

生成二叉排序樹的**分為兩個函式,乙個是插入函式,先定位插入值的位置,再選擇插入到左子樹還是右子樹。另乙個是生成二叉排序樹的函式,輸入結點後呼叫插入函式。

bstnode*

insertbst

(bstnode *t,bstnode *s)

if(t==

null

)return s;

if(s->keykey) f->lchild=s;

else f->rchild=s;

return t;

}bstnode*

createbst()

return t;

}

分三種情況討論:

**如下:

bstnode*

delbst

(bstnode* t,keytype k)

if(p==

null

)return t;

//找不到結點就返回原樹

if(p->lchild==

null

)else

if(f==p) f->lchild=s->lchild;

//s所指結點連線到f上

else f->rchild=s->rchild;

p->key=s->key;

p->other=s->other;

free

(s);

}return t;

}

資料結構 二叉排序樹

二叉排序樹是一種特殊結構的二叉樹,它作為一種表的組織手段,通常被稱為 樹表。可以作為一種排序和檢索的手段。定義 二叉排序樹或是空樹,或是具有下述性質的二叉樹 其左子樹上所有結點的資料值均小於根結點的資料值 右子樹上所有結點的資料值均大於或等於根結點的資料值。左子樹和右子樹又各是一棵二叉排序樹。對二叉...

資料結構 二叉排序樹

二叉排序樹 binarysorttree 具有下列性質的二叉樹 1 若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 2 若右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 3 左 右子樹也分別為二叉排序樹 include includeusing namespace std type...

資料結構 二叉排序樹

如果需要乙個滿足 支援排序性 高效插入 刪除操作 高效查詢的資料結構,怎麼做?先看看一些簡單的資料結構 1 排序順序表 陣列 查詢可以採用折半查詢演算法,時間效率為o log2n 插入 刪除操作的時間複雜度為o n 資料量大時,效率太低。2 排序單鏈表 只能採用順序查詢,時間複雜度為o n 不能採用...