查詢之三 二叉排序樹(續)

2021-07-11 07:03:07 字數 712 閱讀 7064

1. 葉子結點

2. 僅有左或右子樹的結點

3. 左右子樹都有結點

面對上面提到的1,2兩種情況,直接刪除就好了,注意釋放空間;第三種情況時,就用遞迴方式對二叉排序樹t查詢key,查詢到時就刪除。

/*

* 若二叉排序樹t中存在關鍵字等於key的資料元素時,刪除該結點

* 並返回true,否則返回false

*/bool deletebst(bitree* t,int key)else

}}

下面的**則是delete():

//從二叉排序樹中刪除結點,並重接它的左或右子樹

//左右子樹都空和判斷出只有一邊為空的效果是一樣的~~,所以這裡沒有單獨列出這種情況

bool delete(bitree* p)else

if(p->lchild ==

null)else

p->

data

= s->

data; //s此時指向被刪除結點的直接前驅

if(q!=p)

q -> rchild = s->lchild;//重接q的右子樹

else

q->lchild = s->lchild;//重接q的左子樹

free(s);

}}

歡迎交流~~

查詢二 二叉排序樹

1 左子樹上所有結點的值均小於根結點的值 2 右子樹上所有結點的值均大於根結點的值 3 它的左 右子樹也都分別是二叉查詢樹。查詢原理 若二叉查詢樹為空,則查詢不成功 否則 1 key值等於根結點,則查詢成功 2 key值小於根結點,則繼續在左子樹上進行查詢 3 key值大於根結點,則繼續在右子樹上進...

資料結構與演算法 樹的應用 三 二叉排序樹

二叉排序樹是一棵特殊的二叉樹,它是一棵二叉樹但同時滿足如下條件 對於樹上任意乙個結點,其上的數值必大於等於其左子樹上任意結點數值,必小於等於其右子樹上任意結點的數值。我們從二叉樹的插入開始了解其建樹方式,對二叉排序樹插入數字x 若當前數為空,則x為其根節點 若當前結點大於x,則x插入其左子樹 若當前...

查詢 二叉排序樹

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