




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
二叉樹數據結構與算法1二叉查找樹BinarySearchTreesBST特性:對于二叉查找樹的任何一個結點,設其值為K
,則該結點在左子樹中的任意一個結點的值都小于K.該結點右子樹中任意一個結點的值都大于或等于K.2503080209010854035252388例如:是二叉排序樹。66不3BSTADT(1)//BSTimplementationfortheDictionaryADTtemplate<classKey,classElem,classKEComp,classEEComp>classBST:publicDictionary<Key,Elem,
KEComp,EEComp>{private:
BinNode<Elem>*root;//RootoftheBST
int
nodecount;//Numberofnodesvoidclearhelp(BinNode<Elem>*);
BinNode<Elem>*
inserthelp(BinNode<Elem>*,constElem&);
BinNode<Elem>*
deletemin(BinNode<Elem>*,BinNode<Elem>*&);
BinNode<Elem>*removehelp(BinNode<Elem>*,constKey&,BinNode<Elem>*&);
bool
findhelp(BinNode<Elem>*,constKey&,Elem&)const;voidprinthelp(BinNode<Elem>*,int)const;4BSTADT(2)public:BST(){root=NULL;nodecount=0;}~BST(){clearhelp(root);}voidclear(){clearhelp(root);root=NULL;
nodecount=0;}
boolinsert(constElem&e){root=inserthelp(root,e);
nodecount++;returntrue;}
boolremove(constKey&K,Elem&e){
BinNode<Elem>*t=NULL;root=removehelp(root,K,t);if(t==NULL)returnfalse;e=t->val();
nodecount--;deletet;returntrue;}5BSTADT(3)
bool
removeAny(Elem&e){//Deleteminvalueif(root==NULL)returnfalse;//Empty
BinNode<Elem>*t;root=deletemin(root,t);e=t->val();deletet;
nodecount--;returntrue;}
boolfind(constKey&K,Elem&e)const{returnfindhelp(root,K,e);}
intsize(){returnnodecount;}voidprint()const{if(root==NULL)
cout<<"TheBSTisempty.\n";elseprinthelp(root,0);}6BSTSearchtemplate<classKey,classElem,classKEComp,classEEComp>boolBST<Key,Elem,KEComp,EEComp>::
findhelp(BinNode<Elem>*subroot,constKey&K,Elem&e)const{if(subroot==NULL)returnfalse;elseif(KEComp::lt(K,subroot->val()))returnfindhelp(subroot->left(),K,e);elseif(KEComp::gt(K,subroot->val()))returnfindhelp(subroot->right(),K,e);else{e=subroot->val();returntrue;}}7BSTInsert(1)8BSTInsert(2)template<classKey,classElem,classKEComp,classEEComp>BinNode<Elem>*BST<Key,Elem,KEComp,EEComp>::
inserthelp(BinNode<Elem>*subroot,constElem&val){if(subroot==NULL)//Empty:createnodereturnnewBinNodePtr<Elem>(val,NULL,NULL);if(EEComp::lt(val,subroot->val()))
subroot->setLeft(inserthelp(subroot->left(),
val));elsesubroot->setRight(
inserthelp(subroot->right(),val));//Returnsubtreewithnodeinsertedreturnsubroot;}9RemoveMinimumValuetemplate<classKey,classElem,classKEComp,classEEComp>BinNode<Elem>*BST<Key,Elem,
KEComp,EEComp>::deletemin(BinNode<Elem>*subroot,
BinNode<Elem>*&min){if(subroot->left()==NULL){min=subroot;returnsubroot->right();}else{//Continueleft
subroot->setLeft(
deletemin(subroot->left(),min));returnsubroot;}}10BSTRemove(1)刪除C或HABCDEFGHIJCNULLHNULL11BSTRemove(2)刪除D或GABCDEFGHIJDG12BSTRemove(3)刪除37372473224240421204140404013BSTRemove(3)14BSTRemove(4)template<classKey,classElem,classKEComp,classEEComp>BinNode<Elem>*BST<Key,Elem,KEComp,EEComp>::removehelp(BinNode<Elem>*subroot,constKey&K,BinNode<Elem>*&t){if(subroot==NULL)returnNULL;elseif(KEComp::lt(K,subroot->val()))
subroot->setLeft(
removehelp(subroot->left(),K,t));elseif(KEComp::gt(K,subroot->val()))
subroot->setRight(
removehelp(subroot->right(),K,t));15BSTRemove(5)
else{//Foundit:removeit
BinNode<Elem>*temp;t=subroot;if(subroot->left()==NULL)
subroot=subroot->right();elseif(subroot->right()==NULL)
subroot=subroot->left();else{//Bothchildrenarenon-empty
subroot->setRight(
deletemin(subroot->right(),temp));
Elemte=subroot->val();
subroot->setVal(temp->val());temp->setVal(te);
t=temp;}}returnsubroot;}16CostofBSTOper
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州省遵義市2024年九年級《道德》上冊期末試題與參考答案
- 工業(yè)廢氣深度凈化技術在環(huán)保產業(yè)的技術創(chuàng)新與產業(yè)轉型報告
- 2025年不良資產處置市場格局創(chuàng)新驅動與資產處置創(chuàng)新報告
- 電氣作業(yè)練習卷含答案
- 2025年天然氣水合物(可燃冰)開采技術技術創(chuàng)新與研發(fā)動態(tài)預研報告
- 個人退休金投資行業(yè)深度調研及發(fā)展項目商業(yè)計劃書
- 兒童游樂城行業(yè)深度調研及發(fā)展項目商業(yè)計劃書
- 環(huán)保型聚氨酯泡沫保溫材料行業(yè)深度調研及發(fā)展項目商業(yè)計劃書
- 電磁屏蔽天然橡膠電纜行業(yè)跨境出海項目商業(yè)計劃書
- 養(yǎng)生雜糧煎餅外賣企業(yè)制定與實施新質生產力項目商業(yè)計劃書
- 整形醫(yī)院雙眼皮培訓課件
- Meta分析很全的課件
- 電商倉庫流程及診斷
- 施工場地平整施工方案
- 靜脈治療課件
- NPUAP壓瘡指南更新的解讀
- 2020年華為采購物料環(huán)保規(guī)范?V4
- IPQC制程檢驗流程圖
- 進料檢驗報告單
- 2022年江蘇省南京市中考歷史試題(含答案)
- YYT 1182-2020 核酸擴增檢測用試劑(盒)
評論
0/150
提交評論