查詢演算法 2 二叉排序樹

2022-03-06 15:37:38 字數 1060 閱讀 1668

二叉排序數或者是一棵空樹,或者是一棵具有以下性質的二叉樹:

(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 若它的右子樹不空,則右...