二叉排序數或者是一棵空樹,或者是一棵具有以下性質的二叉樹:
(1)若它有左子樹,則左子樹上所有結點的資料均小於根結點的資料。
(2)若它有右子樹,則右子樹上所有結點的資料均大於根結點的資料。
(3)左、右子樹本身又各是一棵二叉排序樹。
這樣,在查詢的時候,從根節點開始,若查詢的元素小於根節點則查詢其左子樹,否則查詢右子樹。
例如資料:
**如下:
1 #include 2#define arraylen 10
3int source = ;
4 typedef struct
bst5
bstree;
1011
//向二叉排序樹中插入節點
12void insertbst(bstree *t,int
key)
1920 p->data =key;
21 p->left = p->right =null;
2223 head =t;
24while
(head)
3132
if(key < parent->data)
33 parent->left =p;
34else
35 parent->right =p;36}
3738
//建立二叉排序樹
39void createbst(bstree *t,int data,int
n)48
49//
中序遍歷排序二叉樹
50void bst_ldr(bstree *t)56}
5758
//根據關鍵字查詢元素
59 bstree *findkey(bstree *t,int
key)
6768
//主函式
69int
main()
查詢演算法 二叉排序樹
二叉排序樹,又稱二叉查詢樹,是一種對排序和查詢都很有用的特殊二叉樹 定義二叉排序樹或者是一棵空樹,或者具有以下定義 1 若左子樹不為空,左子樹上所有結點值均小於根結點值 2 若右子樹不為空,右子樹上所有結點值均大於根結點值 3 左右子樹也分別為二叉排序樹。遞迴定義。有定義可得性質 中序遍歷二叉樹可得...
查詢 二叉排序樹
順序查詢 順序查詢又叫線性查詢,是最基本的查詢技術,它的查詢過程是 從表中第乙個記錄開始,逐個進行記錄的關鍵字和給定值比較,若某個記錄的關鍵字和給定值相等,則查詢成功,找到所查的記錄 如果知道最後乙個記錄,其關鍵字和給定值比較都不等時,則表中沒有所查的記錄,查詢不成功。順序查詢演算法實現 如下 順序...
查詢 二叉排序樹
動態查詢表 表結構本身是在查詢過程中動態生成的,即對於給定值key,若表中存在其關鍵值等於key的記錄,則查詢成功返回,否則插入關鍵字等於key的記錄。二叉排序樹或者是一顆空樹,或者是具有下列性質的二叉樹 1 若他的左子樹不為空,則左子樹上所有結點的值均小於它的根結點的值。2 若它的右子樹不空,則右...