二叉搜尋樹(BST)學習筆記

2022-05-14 15:34:35 字數 1991 閱讀 7195

二叉搜尋樹(\(binary\ search\ tree\)),簡稱\(bst\),用於在乙個集合中查詢元素。

若它的左子樹不為空,則左子樹上所有節點的值都小於根節點的值

若它的右子樹不為空,則右子樹上所有節點的值都大於根節點的值

它的左右子樹也分別為二叉搜尋樹

1、插入

操作內容:

將乙個元素插入二叉搜尋樹。

操作方法:

將乙個元素插入乙個二叉搜尋樹,需要將插入元素與當前節點元素進行比較:

若插入元素等於當前節點元素,則說明已插入過該元素,退出函式。

若插入元素小於當前節點元素,如果當前節點左子樹為空,則將該節點左子樹定為當前插入元素,否則,繼續對當前節點的左子樹進行操作。

類似的,若插入元素大於當前節點元素,如果當前節點右子樹為空,則將該節點右子樹定為當前插入元素,否則,繼續對當前節點的右子樹進行操作。

**如下:

void insert(bst *&x,int v) 

if(v==x->num) return;//若已插入過,則退出函式

if(vnum) insert(x->left,v);//若插入元素小於當前節點元素,則繼續對當前節點的左子樹進行操作

else insert(x->right,v);//反之,繼續對當前節點的右子樹進行操作

}

2、查詢

操作內容:

查詢乙個元素是否在二叉搜尋樹中。

操作方法:

查詢乙個元素是否在二叉搜尋樹中,需要將查詢元素與當前節點元素進行比較:

若查詢元素等於當前節點元素,則返回1。

若查詢元素小於當前節點元素,如果當前節點左子樹為空,則返回0,否則,繼續對當前節點的左子樹進行操作。

類似的,若查詢元素大於當前節點元素,如果當前節點右子樹為空,則返回0,否則,繼續對當前節點的右子樹進行操作。

**如下:

int query(bst *x,int v)

3、刪除

操作內容:

刪除二叉搜尋樹中的乙個元素。

操作方法:

刪除二叉搜尋樹中的乙個元素,需要將刪除元素與當前節點元素進行比較:

若刪除元素等於當前節點元素,如果當前節點無子樹,則將當前節點設定為空,否則,將當前節點設定為當前節點的乙個子樹,操作完後退出函式。

若刪除元素小於當前節點元素,如果當前節點左子樹為空,則退出函式,否則,繼續對當前節點的左子樹進行操作。

類似的,若刪除元素大於當前節點元素,如果當前節點右子樹為空,則退出函式,否則,繼續對當前節點的右子樹進行操作。

具體**如下:

void delete(bst *&x,int v)

//刪除當前節點

if(vnum) delete(x->left,v);

else delete(x->right,v);

}

#include#define n 1000

using namespace std;

int q;

struct bst

*rt=null;

void insert(bst *&x,int v)

if(v==x->num) return;//若已插入過,則退出函式

if(vnum) insert(x->left,v);//若插入元素小於當前節點元素,則繼續對當前節點的左子樹進行操作

else insert(x->right,v);//反之,繼續對當前節點的右子樹進行操作

}int query(bst *x,int v)

void delete(bst *&x,int v)

//刪除當前節點

if(vnum) delete(x->left,v);

else delete(x->right,v);

}int main()

return 0;

}

二叉搜尋樹BST

在二叉搜尋樹b中查詢x的過程為 1.若b是空樹,則搜尋失敗,否則 2.若x等於b的根結點的資料域之值,則查詢成功 否則 3.若x小於b的根結點的資料域之值,則搜尋左子樹 否則 4.查詢右子樹 指標parent指向proot的父節點,其初始呼叫值為null 若查詢成功,指標ptarget指向目標節點,...

二叉搜尋樹(BST)

二叉搜尋樹 bst bst 或者是一棵空樹,或者對於任何乙個結點,設其值為k,則該結點的左子樹的值小於k,右結點的值大於k。二叉搜尋樹按照中根遍歷將各個結點列印,將得到按照大到小的順序排列。bsg示意圖 二叉搜尋樹的效率在於檢索,將演算法複雜度從2 k減少到log n 檢索方式 從根結點開始,如果等...

BST二叉搜尋樹

深入學習理解bst include using namespace std typedef struct bitnodebitnode,bitree 二叉樹的插入操作 void insert bitnode root,int x 因為當對空樹插入時,相當於改變了樹的根節點的指向,因此需要用到指標或引...