查詢演算法 二叉排序樹

2022-09-07 19:15:08 字數 828 閱讀 7432

二叉排序樹,又稱二叉查詢樹,是一種對排序和查詢都很有用的特殊二叉樹

定義二叉排序樹或者是一棵空樹,或者具有以下定義:

1)若左子樹不為空,左子樹上所有結點值均小於根結點值;

2)若右子樹不為空,右子樹上所有結點值均大於根結點值;

3)左右子樹也分別為二叉排序樹。

遞迴定義。有定義可得性質:中序遍歷二叉樹可得到結點遞增的有序序列。

查詢模仿折半查詢易得非遞迴查詢演算法,以下給出遞迴形式

bstree searchbst(bstree t, keytype key)
演算法分析:

二叉排序樹上的查詢和折半查詢相差不大。但二叉排序樹可更好地維護表的有序性,無需移動記錄,只需移動指標即可完成插入和刪除操作。

因此,對需要經常進行插入、刪除和查詢運算的表,採用二叉排序樹比較好。

插入當樹中不存在關鍵字等於key的結點時才進行插入。

新插入的結點一定是乙個新新增的葉子結點(?一定是葉子結點?),且是查詢不成功時查詢路徑上訪問的最後乙個結點的左孩子或右孩子節點。

void insertbst(bstree t, elementtype e) 

else if (t.data > e.data) insertbst(t.lchild, e);

else if (t.data < e.data) insertbst(t.rchild, e);

}

建立

void createbst(bstree t) 

}

刪除(待補充......)

查詢 二叉排序樹

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

查詢 二叉排序樹

動態查詢表 表結構本身是在查詢過程中動態生成的,即對於給定值key,若表中存在其關鍵值等於key的記錄,則查詢成功返回,否則插入關鍵字等於key的記錄。二叉排序樹或者是一顆空樹,或者是具有下列性質的二叉樹 1 若他的左子樹不為空,則左子樹上所有結點的值均小於它的根結點的值。2 若它的右子樹不空,則右...

二叉排序樹之查詢演算法

1.二叉排序樹的定義與描述 二叉排序樹又稱為二叉查詢樹,它是一種特殊的二叉樹。定義 二叉排序樹是一顆空樹或者是具有一下性質的二叉樹。1 若它的左子樹非空,則左子樹上所有的結點值均小於根結點的值。2 若它的右子樹非空,則右子樹上所有的結點的值均大於 或等於 根結點的值。3 它的左右子樹也分別是二叉排序...