


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
八、樹(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣告法規(guī)與職業(yè)道德
- 安全生產執(zhí)法?;番F(xiàn)場執(zhí)法手冊
- 北師版二年級下冊語文期末總復習資料
- 保密工作實施方案3篇
- 2025屆浙江省紹興市諸暨市諸暨中學高二下化學期末質量跟蹤監(jiān)視模擬試題含解析
- 湖北省襄陽隨州漢東高級中學2024-2025學年高一下學期6月期末聯(lián)考政治試題
- 2025年天津市南大附中高一期中-語文試卷
- 山陽區(qū)四城聯(lián)創(chuàng)活動方案
- 小學生秋季旅行活動方案
- 少年講堂活動方案
- 2025年保密教育線上培訓考試題庫參考答案
- 安管員考試題庫及答案
- 《屹立在世界的東方》課件
- 【博觀研究院】中國口服維生素保健品市場分析報告(簡版)
- T/CI 475-2024廚余垃圾廢水處理工程技術規(guī)范
- T/CCT 011-2020干法選煤技術規(guī)范
- (高清版)DB62∕T 4730-2023 公路裝配式石籠防護設計與施工技術規(guī)范
- 2024-2025 學年八年級英語下學期期末模擬卷 (深圳專用)原卷
- 內蒙古呼和浩特市實驗中學2024-2025學年下學期七年級數(shù)學試卷
- 2025年重癥醫(yī)學科ICU護理信息化建設計劃
- 2024年注冊核安全工程師歷年真題答案
評論
0/150
提交評論