今天寫一寫二叉搜尋樹的插入,查詢,刪除的操作。
首先給出節點的資料結構
struct node
;
第乙個是查詢操作:
void search(node* root,int x)
if(root->
data
==x)
if(x
data)
search(root->l,x);
else
search(root->r,x);
}
第二個插入操作:
void insert(node*
&root,int x)
if(root->
data
==x)
return;
if(x
data)
insert(root->l,x);
else
insert(root->r,x);
}
第三是刪除操作:
這裡要說明的是,實際上刪除的操作有很多的實現的方式,有遞迴和非遞迴的,這裡用了遞迴,是因為實現簡單,不易出錯,容易在考場和比賽是寫出。
node* findpre(node* root)
node*findpost(node* root)
bool deletee(node* root,int x)
else
else}}
else
}
基本上就這些,但是沒有用資料測試過,但是大致思路上就這樣了。 二叉搜尋樹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 因為當對空樹插入時,相當於改變了樹的根節點的指向,因此需要用到指標或引...