1 #include2 #include34#define true 1
5#define false 0
6#define elemtype int
7#define keytype int89
10/*
二叉排序樹的節點結構定義
*/11 typedef struct
bitnode
12 bitnode, *bitree;
1617
18/*
二叉排序樹查詢演算法
*/19
int searchbst(bitree t, keytype key, bitree f, bitree *p)
2027
//如果相等,令 p 指標指向該關鍵字,並返回查詢成功資訊
28else
if (key == t->data)
2933
//如果 key 值比 t 根結點的值小,則查詢其左子樹
34else
if (key < t->data)
3538
//如果 key 值比 t 根結點的值大,則查詢其右子樹
39else
4043}44
4546
int insertbst(bitree *t, elemtype e)
4762
63//
如果 p 不為 null,則 p 指向的為查詢失敗的最後乙個葉子結點,只需要通過比較 p 和 e 的值確定 s 到底是 p 的左孩子還是右孩子
64else
if (e < p->data)
6568
else
6972
73return
true;74}
7576
//如果查詢成功,不需要做插入操作,插入失敗
77return
false;78}
7980
//刪除函式
81int delete(bitree *p)
8289
90else
if (!(*p)->lchild) //
左子樹為空,只需用結點 p 的右子樹根結點代替結點 p 即可;
9196
97else
if (!(*p)->rchild) //
右子樹為空,只需用結點 p 的左子樹根結點代替結點 p 即可;
98103
104else
//左右子樹均不為空,採用直接前驅來代替需要刪除的結點
105114
115//
直接改變結點 p 的值
116 (*p)->data = s->data;
117118
//判斷結點 p 的左子樹 s 是否有右子樹,分為兩種情況討論
119if (q != *p)
120123
else
124127
free
(s);
128}
129return
true;
130}
131132
int deletebst(bitree *t, int
key)
133138
else
139145
else
if (key < (*t)->data)
146150
else
151154
}155
}156
157158
void order(bitree t)//
中序輸出
159164 order(t->lchild);
165 printf("
%d ", t->data);
166 order(t->rchild);
167}
168169
170int
main()
171188
189//
中序輸出二叉排序樹
190 printf("
中序遍歷二叉排序樹:\n");
191order(t);
192 printf("\n"
);193
194//
刪除操作
195 printf("
請輸入您想要刪除的元素:\n");
196int
x1;197 scanf("
%d", &x1);
198 deletebst(&t, x1);
199if(deletebst(&t, x1))
200205
else
206209 printf("
-------------------------------------\n");
210}
211return0;
212 }
二叉排序樹
在複習資料結構,把這個東西總結一下。這種結構是動態查詢表,這種動態是相對靜態查詢 順序查詢,折半查詢,分塊查詢等 來說的。對於各種靜態鍊錶,要達到查詢複雜度為o logn 必須要求有序 而要使插入刪除複雜度為o 1 必須是鍊錶儲存。動態查詢表就可以同時滿足這兩者。動態查詢表的特點是表結構本身在查詢過...
二叉排序樹
name 二叉排序樹相關操作 author unimen date 2011 10 8 13 14 21 刪除結點比較麻煩,總結如下 4大種情況 1 結點p無右孩子 將該點的左孩子變為其在雙親中的同位孩子 1 p為其雙親的左孩子時將其的左孩子變為雙親的左孩子 2 p為其雙親的右孩子時將其的左孩子變為...
二叉排序樹
include include include include struct tree node void insert node struct tree node int void pre order struct tree node void in order struct tree node ...