圖解數(shù)據(jù)結構6-樹及樹的遍歷_第1頁
圖解數(shù)據(jù)結構6-樹及樹的遍歷_第2頁
圖解數(shù)據(jù)結構6-樹及樹的遍歷_第3頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

八、樹(Tree八、樹(Tree)樹,顧名思義,長得像一棵樹,不過通常我們畫成一棵倒過來的樹,根在上,葉在下。不說樹,顧名思義,長得像一棵樹,不過通常我們畫成一棵倒過來的樹,根在上,葉在下。不說那么多了,圖一看就懂:么多文字?關系不得出現(xiàn)交叉重疊區(qū)域,否則就不能用樹描述了,看圖:面試的時候我們經常被考到的是一種叫“二叉樹”特點是除了葉以外的節(jié)點都有兩個子,圖:由此我們還可以推出“三叉樹”:當然還有“四叉樹”,“五叉樹”,“六叉樹”……但太難畫了,節(jié)點太多,略過。九、樹的遍歷(Traversal)顛倒一下左右,就是不一樣的二叉樹了,所以左右是不能隨便顛倒的。在第三篇講到“隊”的時候,提及到了廣度優(yōu)先遍歷(Breadth-firsttraversal),除了廣度優(yōu)先遍歷之外,還有深度優(yōu)先遍歷(Depth-firstTraversal),深度優(yōu)先遍歷又可分為:前序遍歷(PreorderTraversal),后序遍歷(PostorderTraversal)和中序遍歷(InorderTraversal),其中中序遍歷只有對二叉樹才有意義,下圖解釋這幾種遍歷:好了,又到代碼階段,寫點代碼。我看過許多數(shù)據(jù)結構的教材,二叉樹遍歷都是必不可少的歷。怎么辦?我給個提示:廣度優(yōu)先遍歷時候我們用了隊,中序遍歷,我們使用*棧*??纯茨懿荒軐懗鰜?,我也來寫:#include<stdio.h>//TreeNode//////////////////////////////////////////////////////////////////////////structTreeNode{charm_cVal;TreeNode*m_pLeft;TreeNode*m_pRight;TreeNode(charcVal);~TreeNode();};TreeNode::TreeNode(charcVal){m_cVal=cVal;m_pLeft=0;m_pRight=0;}TreeNode::~TreeNode(){}//Stack//////////////////////////////////////////////////////////////////////////classStack{public:Stack(intiAmount=10);~Stack();//return1meanssucceeded,0Pop(TreeNode*&pVal);intPush(TreeNode*pVal);intTop(TreeNode*&pVal);//1meansnotnull,0NotNull();private:TreeNode**m_ppData;intm_iCount;intm_iAmount;};Stack::Stack(intiAmount){m_ppData=newTreeNode*[iAmount];m_iCount=0;m_iAmount=iAmount;}Stack::~Stack(){deletem_ppData;}intStack::Pop(TreeNode*&pVal){if(m_iCount>0){--m_iCount;pVal=m_ppData[m_iCount];return1;}return0;}intStack::Push(TreeNode*pVal){if(m_iCount<m_iAmount){m_ppData[m_iCount]=pVal;++m_iCount;return1;}return0;}intStack::Top(TreeNode*&pVal){if(m_iCount>0&&m_iCount<=m_iAmount){pVal=m_ppData[m_iCount-1];return1;}return0;}intStack::NotNull(){if(m_iCount!=0)return1;return0;}intmain(intargc,char*argv[]){//Constructthetree.// A// / \// / \//B C// \ /\//DE F//\\//GH///\//I J///\//K LTreeNodenA('A');TreeNodenB('B');TreeNodenC('C');TreeNodenD('D');TreeNodenE('E');TreeNodenF('F');TreeNodenG('G');TreeNodenH('H');TreeNodenI('I');TreeNodenJ('J');TreeNodenK('K');TreeNodenL('L');nA.m_pLeft=&nB;nA.m_pRight=&nC;nB.m_pRight=&nD;nD.m_pRight=&nG;nC.m_pLeft=&nE;nC.m_pRight=&nF;nF.m_pRight=&nH;nH.m_pLeft=&nI;nH.m_pRight=&nJ;nI.m_pLeft=&nK;nI.m_pRight=&nL;Stackst;//InordertraversalTreeNode*pVal=&nA;intiPopped=0;while(pVal!=0){if(pVal->m_pLeft!=0&&iPopped==0){st.Push(pVal);pVal=pVal->m_pLeft;iPopped=0;}elseif(pVal->m_pRight!=0){printf("%c",pVal->m_cVal);pVal=pVal->m_pRight;iPopped

溫馨提示

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

評論

0/150

提交評論