資料結構 9 2 1二叉排序樹

2021-10-06 04:41:24 字數 880 閱讀 3673

二叉排序樹或者是一棵空樹,或者是具有如下特性的二叉樹:

1.若它的左子樹不空,則左子樹上所有結點的值均小於根結點的值;

2.若它的右子樹不空,則右子樹上所有結點的值均大於根結點的值;

3.它的左、右子樹也都分別是二叉排序樹。

注:只要有乙個結點不滿足就不是二叉排序樹

通常,取二叉鍊錶作為二叉排序樹的儲存結構

typedef

struct bitnode bitnode,

*bitree;

status searchbst (bitree t, keytype key, 

bitree f, bitree &p )

elseif(

eq(key, t->data.key)

)elseif(

lt(key, t->data.key)

)else

}// searchbst

根據動態查詢表的定義,「插入」操作在查詢不成功時才進行; 若二叉排序樹為空樹,則新插入的結點為新的根結點;否則,新插入的結點必為乙個新的葉子結點,其插入位置由查詢過程得到。

和插入相反,刪除在查詢成功之後進行,並且要求在刪除二叉排序樹上某個結點之後,仍然保持二叉排序樹的特性。

可分三種情況討論:

(1) 被刪除的結點是葉子結點

其雙親結點中相應指標域的值改為「空」

(2) 被刪除的結點只有左子樹或者只有右子樹

其雙親結點的相應指標域的值改為 「指向被刪除結點的左子樹或右子樹」。

(3) 被刪除的結點既有左子樹,也有右子樹

以其中序前驅(左子樹的最右無右子樹的結點)替代之,然後再刪除該前驅結點

結論

資料結構 二叉排序樹

二叉排序樹是一種特殊結構的二叉樹,它作為一種表的組織手段,通常被稱為 樹表。可以作為一種排序和檢索的手段。定義 二叉排序樹或是空樹,或是具有下述性質的二叉樹 其左子樹上所有結點的資料值均小於根結點的資料值 右子樹上所有結點的資料值均大於或等於根結點的資料值。左子樹和右子樹又各是一棵二叉排序樹。對二叉...

資料結構 二叉排序樹

二叉排序樹 binarysorttree 具有下列性質的二叉樹 1 若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 2 若右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 3 左 右子樹也分別為二叉排序樹 include includeusing namespace std type...

資料結構 二叉排序樹

如果需要乙個滿足 支援排序性 高效插入 刪除操作 高效查詢的資料結構,怎麼做?先看看一些簡單的資料結構 1 排序順序表 陣列 查詢可以採用折半查詢演算法,時間效率為o log2n 插入 刪除操作的時間複雜度為o n 資料量大時,效率太低。2 排序單鏈表 只能採用順序查詢,時間複雜度為o n 不能採用...