資料結構 二叉排序樹

2021-06-17 01:02:39 字數 1353 閱讀 6139

二叉排序樹(binarysorttree):

具有下列性質的二叉樹:

(1)若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值;

(2)若右子樹不空,則右子樹上所有結點的值均大於它的根結點的值;

(3)左、右子樹也分別為二叉排序樹;

#include#includeusing namespace std;

typedef struct node //記錄型別

bstnode,*bstree;

void insertbst(bstree *t,int k)

p=(bstree)malloc(sizeof(bstnode));

p->key=k;

p->lchild=p->rchild=null;

if(*t==null) *t=p;

else if (kkey) f->lchild=p;

else f->rchild=p;

}bstree searchbst(bstree t, int k)

bstree insertbst2(bstree t,int k)//插入關鍵字k,非遞迴

p=(bstree)malloc(sizeof(bstnode));

p->key=k;

p->lchild=p->rchild=null;

if(t==null)t=p;//插入結點為新的根結點

else if(kkey)f->lchild = p;//插入結點為左孩子

else f->rchild = p;//插入結點為右孩子

return t;

}void delbst(bstree *t,int k)

if(!p) return; /*二叉排序樹中無關鍵字為k的結點*/

if(p->lchild==null&&p->rchild==null)

else

if(p->lchild==null&&p->rchild!=null) /* *p無左子樹*/

else if(p->rchild==null&&p->lchild!=null) /**p有左子樹*/

else if(p->lchild!=null&&p->rchild!=null)

p->key=s->key;

if(q!=p) q->rchild=s->lchild;

else q->lchild=s->lchild;

free(s);

}}void inorderbstree(bstree p)

}void operation()

{ cout<<"\t0,操作結束"<

資料結構 二叉排序樹

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

資料結構 二叉排序樹

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

資料結構 二叉排序樹

二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子樹上所有結點的值均大於或等於它的根結點的值 3 左 右子樹也分別為二叉排序樹 根據二叉樹的定義,左子樹節點值 根節點值 右子樹節點值。所以對二叉排序樹進行...