二叉排序樹

2021-09-19 01:25:46 字數 1275 閱讀 7134

二叉排序樹又稱二叉搜尋樹,滿足下列特徵:

typedef

struct bstnode bstnode;

//節點結構

bool

insertbst

(bstnode *

&bt,

int k)

else

if(bt-

>data == k)

return

false

;else

if(bt-

>data > k)

return

insertbst

(bt-

>left, k)

;else

return

insertbst

(bt-

>right, k)

;}

bstnode*

createbstree

(int a,

int n)

bstnode *

searchbst

(bstnode *bt,

int k)

5、刪除節點

/*

刪除節點過程分以下幾種情況

1、若p是葉子節點,直接刪除

2、若p節點只有左子樹而無右子樹,可用其左孩子節點代替p

3、若p節點只有右子樹而無左子樹,將其右孩子節點替代p

4、若p節點同時有左右子樹,選擇左子樹中最大的節點用其替代p,然後刪除左子樹最大的節點(第2種情況)

*/void

delete

(bstnode *

&bt)

;void

delete1

(bstnode *

&bt, bstnode *

&b);

bool

deletebst

(bstnode *

&bt,

int k)}}

void

delete

(bstnode *

&bt)

else

if(bt-

>right ==

nullptr

)else

}void

delete1

(bstnode *

&bt, bstnode *

&b)}

二叉排序樹

在複習資料結構,把這個東西總結一下。這種結構是動態查詢表,這種動態是相對靜態查詢 順序查詢,折半查詢,分塊查詢等 來說的。對於各種靜態鍊錶,要達到查詢複雜度為o logn 必須要求有序 而要使插入刪除複雜度為o 1 必須是鍊錶儲存。動態查詢表就可以同時滿足這兩者。動態查詢表的特點是表結構本身在查詢過...

二叉排序樹

name 二叉排序樹相關操作 author unimen date 2011 10 8 13 14 21 刪除結點比較麻煩,總結如下 4大種情況 1 結點p無右孩子 將該點的左孩子變為其在雙親中的同位孩子 1 p為其雙親的左孩子時將其的左孩子變為雙親的左孩子 2 p為其雙親的右孩子時將其的左孩子變為...

二叉排序樹

include include include include struct tree node void insert node struct tree node int void pre order struct tree node void in order struct tree node ...