資料結構二叉排序樹

2021-10-10 22:59:15 字數 1126 閱讀 4848

//二叉排序樹

#include

#include

typedef

int keytype;

typedef

struct node

bstnode,

*bstree;

//二叉排序樹插入的遞迴演算法

void

insertbst

(bstree * bst, keytype key)

else

if(key <

(*bst)

->key)

//將s插入左樹

else

if(key >

(*bst)

->key)

//將s插入右樹

}//二叉排序樹的建立

void

createbst

(bstree * bit)

}//二叉排序樹查詢的遞迴演算法

bstree researchbst

(bstree bst,keytype key)

//二叉排序樹的非遞迴

bstree searchbst (bstree bst, keytype key)

return

null;}

//二叉排序樹的刪除

bstnode *

delbst

(bstree t, keytype key)

if(p ==

null

)//未找到要刪除的結點

return t;

if(p->left ==

null

)//p無左子樹

else

//p有左子樹

if(q == p)

q->left = s->left;

//將s的左子鏈鏈到q上

else

q->right = s->left;

p->key = s->key;

free

(s);

}return t;

}void

printbst

(bstree bst)

}int

main()

資料結構 二叉排序樹

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

資料結構 二叉排序樹

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

資料結構 二叉排序樹

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