第七章 查詢之二叉排序樹

2021-06-28 00:28:28 字數 1094 閱讀 5216

#include #include 

#define n 100typedef

struct

data;

typedef

struct

lnode

lnode,*linklist; //

每個結點的型別;

linklist root;

//void creat(linklist &l)

//linklist search(linklist p,int key) //

在二叉排序中尋找關鍵字為key的結點,並返回結點指標。

void insert(linklist &l,int

key)

else

}void creat(linklist &l)

}void

print(linklist l)

}void delete(linklist &l,int

key)

else

if(!p)

printf(

"輸入錯誤,沒有值為%d的結點!\n

",key);

else

else

}if(!p) //

如果p為空,證明查詢不成功,沒有值為key的結點!

printf("

輸入錯誤,沒有值為%d的結點!\n

",key);

else

else

if(!p->l && p->r) //

左空右不空;

else

if(!p->r && p->l) //

右空,左不空;

else

//左右都不空! 找到左子樹的最大的節點,即中序遍歷的最後乙個結點即可。

//e即是最小的結點。 m是其前驅結點;

//這裡簡單處理一下,將e的資料域賦值到p中即可,並且釋放e;

p->data=e->data;

if(m!=p)

m->r=null;

else

m->l=null;

delete e;}}

}}int

main()

動態查詢之 二叉排序樹

從圖上可得出二叉排序樹的基本概念。左子樹小於根,右子樹大於根 中序遍歷後有序 樹中最小的樹在最左邊,最大的在最右邊 這裡主要分析一下二叉排序樹的插入和刪除。pcur new node key,value if key pparent key else if key pparent key 這裡只擷取...

查詢演算法 樹表查詢之二叉排序樹

從前面介紹的查詢方法我們知道,折半查詢較順序查詢速度快,但折半查詢要求表中記錄必須有序,因為當在已排序的表中找到新記錄恰當的位置時,需要移動許多記錄以便為新記錄騰出位置。有沒有哪一種組織記錄的方法使得記錄的插入與查詢都能夠很快地完成呢?本篇部落格介紹的樹表查詢就能解決這個問題。二叉排序樹 bst 也...

查詢 二叉排序樹

順序查詢 順序查詢又叫線性查詢,是最基本的查詢技術,它的查詢過程是 從表中第乙個記錄開始,逐個進行記錄的關鍵字和給定值比較,若某個記錄的關鍵字和給定值相等,則查詢成功,找到所查的記錄 如果知道最後乙個記錄,其關鍵字和給定值比較都不等時,則表中沒有所查的記錄,查詢不成功。順序查詢演算法實現 如下 順序...