大二上數(shù)算ds chtree數(shù)據(jù)結(jié)構(gòu)與算法_第1頁(yè)
大二上數(shù)算ds chtree數(shù)據(jù)結(jié)構(gòu)與算法_第2頁(yè)
大二上數(shù)算ds chtree數(shù)據(jù)結(jié)構(gòu)與算法_第3頁(yè)
大二上數(shù)算ds chtree數(shù)據(jù)結(jié)構(gòu)與算法_第4頁(yè)
大二上數(shù)算ds chtree數(shù)據(jù)結(jié)構(gòu)與算法_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第6 高等教育,2008.6,“十一五”國(guó)家級(jí)規(guī)按某一規(guī)律系統(tǒng)地 并使每個(gè)結(jié)點(diǎn)恰好被 F FJL

Na)第一棵樹的 在先根次序下遍歷第一棵樹 在后根次序下遍歷第一棵樹 temte<classT>TreeNode<T>*root){while(root!=NULL) //當(dāng)前結(jié)//遍歷第一棵樹根的森林rootroot->RightSibling();遍歷其他樹} CEDJFXMLCEDJFXMLKGLINerse(TreeNode<T>*root){while(root!=NULL)//遍歷第一棵樹根的森林 //當(dāng)前結(jié)點(diǎn)root=root->RightSibling();//遍歷其他樹}} D 森林廣度優(yōu)先得到層次序列:ADBCEFGKHvoidTree<T>::WidthTraverse(TreeNode<T>*root)using queue<TreeNode<T>*>aQueue;TreeNode<T>*pointer=root;while(pointer!=NULL){ pointerpointer }pointer pointer=pointer->LeftMostChild(); //pointer指向最左孩子while(pointer!=NULL){ pointer=pointer-}}}D

DE 2014FallStructures&HZ8 2014FallDataStructures&Algorithms Haiyan 每個(gè)分支結(jié)點(diǎn)均 其子結(jié)點(diǎn)信息,子結(jié)點(diǎn)按照\(chéng)A索引值父結(jié)點(diǎn)\A0B00B11D0C21D0C\1E3\1E\2F4\2F2G52G\2H6\2H\3I7\3I\3J8\3J\6K9\6K\6L\6L

2\4\\\值

只需簡(jiǎn)單設(shè)置三個(gè)指針值即可與子結(jié)點(diǎn)表表示法相比,空間效率更高,且結(jié)點(diǎn)每個(gè)結(jié)點(diǎn)一個(gè)基于數(shù)組的子結(jié)點(diǎn)指針表。在子結(jié)GHGH 由于樹的每個(gè)結(jié)點(diǎn)均包含固定數(shù)目的指針,而且樹的ADT的每個(gè)函數(shù)均能有效實(shí)現(xiàn),故動(dòng)態(tài)“右兄” K // //樹結(jié)點(diǎn)的值 //右兄結(jié)點(diǎn)//tem //拷貝構(gòu)造函數(shù)m_Value=value;pChild=NULL;pSibling} te<class //return} te<class 如果結(jié)點(diǎn)是葉,返回trueif(pChild==NULL)returntrue;returnfalse;} te<class //返回第一 } te<class //return} te<class TreeNode<T>::setValue(T& //m_Value=}//TreeNode<T>* ////返回current的父節(jié)點(diǎn),由函數(shù)ParentTreeNode<T>*getParent(TreeNode<T>*root,TreeNode<T>* voidtemte<classT>CTree<T>::Tree()root //}temte<classT>Tree<T>::~Tree()while(root)}temte<classT>TreeNode<T>*Tree<T>::getRoot()return}using TreeNode<T>*pointer=root;TreeNode<T>*fatherupperlevelpointer=NULL;//記錄父結(jié)點(diǎn)if(current!=NULL&&pointer!=current)while(pointerNULL) if(current -> }pointer upperlevelpointer= pointerpointer if(current==pointer)father break;}else{}}}aQueue.clear( return}temte<classvoidTree<T>::DestroyNodes(TreeNode<T>*root)if(root)deleteroot;}}

ABABCKDEFGHJ

0024445600244456ABCKDEFGHJ

找結(jié)點(diǎn)的和兄弟比較費(fèi)事(遍查整個(gè)數(shù)組沒有表示出結(jié)點(diǎn)之間的左右次序(適于無(wú)序樹abcdefabcdefghija-b0d1e1h3i3j3c0f7g70123456789intrightSibling_partree(PParTreet,intp)inti;if(p>=0&&p<t-{for(i=p+1;i<t->n;if(t->nodelist[i].parent==t-}return(-}nSrx,(x,x)∈R(自反x,y)∈R(y,x)∈R(對(duì)稱x,y)∈R(y,z)∈Rx,z)∈R(傳遞 點(diǎn)的根結(jié)點(diǎn)的過程稱為Find(A,(C,(J,(H,(D,(K,(E,(H,先對(duì)5(A,B)、(C,K(J,F)(H,E)BE 23456789BE(A,B)(C,K)(J,F)BE

A

0024456ABCKD0024456ABCKDEFGHJ

E E

A0B0C2KDA0B0C2KD4E4F4G5H6JB0123456789 temte<classclassParTree ParTreeNode<T>* //樹結(jié)點(diǎn)的數(shù)int Find(ParTreeNode<T>*node ParTree(constint virtual voidUnion(inti,int i,jboolDifferent(inti,int temte<class{ParTreeNode<T>*pointer=node;while(pointer->getParent()!=NULL)returnpointer;}temte<classvoidParTree<T>::Union(inti,intj)ParTreeNode<T>*pointeri=Find(&array[i]);//找到結(jié)點(diǎn)i的根ParTreeNode<T>*pointerj=Find(&array[j]);//找到結(jié)點(diǎn)j的根if(pointeri!=pointerj){if(pointeri->getCount()>=pointerj-{pointerj-pointeri->setCount(pointeri->getCount()}elsepointerj->setCount(pointeri->getCount()}}} Union:… …n

以把樹的整體深度限制在O(logn)logn a)路徑壓縮之 (b)路徑壓0024446ABCKDEFGHJE Etemte<class{if(node->getParent()==NULL)returnnode;returnnode->getParent();}log*nnlogn1nlog*655364(4次log操作 任何結(jié)點(diǎn)的的所有結(jié)點(diǎn)都直接跟在該結(jié)點(diǎn);

EGE 2014FallDataStructures&Algorithms Haiyanltag有子結(jié)點(diǎn)(對(duì)應(yīng)二叉樹有則為0,沒有則為

ltag的值完全可以推知llinkltag為0的結(jié)點(diǎn)有結(jié)點(diǎn),lli

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論