![天津理工大學數據結構實驗報告3_第1頁](http://file4.renrendoc.com/view/9b9936c468879d8c2df5ee4179cff6a8/9b9936c468879d8c2df5ee4179cff6a81.gif)
![天津理工大學數據結構實驗報告3_第2頁](http://file4.renrendoc.com/view/9b9936c468879d8c2df5ee4179cff6a8/9b9936c468879d8c2df5ee4179cff6a82.gif)
![天津理工大學數據結構實驗報告3_第3頁](http://file4.renrendoc.com/view/9b9936c468879d8c2df5ee4179cff6a8/9b9936c468879d8c2df5ee4179cff6a83.gif)
![天津理工大學數據結構實驗報告3_第4頁](http://file4.renrendoc.com/view/9b9936c468879d8c2df5ee4179cff6a8/9b9936c468879d8c2df5ee4179cff6a84.gif)
![天津理工大學數據結構實驗報告3_第5頁](http://file4.renrendoc.com/view/9b9936c468879d8c2df5ee4179cff6a8/9b9936c468879d8c2df5ee4179cff6a85.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
計算機科學與工程系PAGEPAGE6計算機科學與工程系實驗(三)實驗名稱二叉樹的遍歷軟件環(huán)境Windows98/2000,VC++6.0或turboC硬件環(huán)境PⅡ以上微型計算機實驗目的理解二叉樹的邏輯特點,掌握二叉鏈表存儲結構,掌握二茬樹遍歷算法的遞歸與非遞歸實現實驗內容(應包括實驗題目、實驗要求、實驗任務等)二叉樹的遍歷利用二叉鏈表作為存儲結構建立一棵二叉樹,每個結點中存放一種水果名(例如apple、orange、banana等,并要求從鍵盤輸入),結點數不少于5個。要求分別以先序、中序和后序進行遍歷,輸出遍歷結果。并編寫一遞歸算法,交換該二叉樹中所有結點的左、右孩子。實驗過程與實驗結果(可包括實驗實施的步驟、算法描述、流程、結論等)實驗步驟及算法描述和流程:創(chuàng)建二叉鏈表的結點存儲結構及數據的輸入輸出函數因為每個結點所存儲的數據類型為字符串,卻無法使用字符串和String等數據類型,所以使用單鏈表作為結點所存儲的數據類型。數據的輸入函數indata()當輸入的字符不為‘0’時,以尾插法將數據插入單鏈表。數據的輸出函數直接輸出單鏈表。生成二叉鏈表利用先序遍歷生成二叉鏈表:用單鏈表s記錄輸入的數據若單鏈表s為空,則二叉鏈表結點為空,否則根節(jié)點=s,利用遞歸調用分別生成根節(jié)點的左子樹和右子樹返回二叉鏈表先序遍歷、中序遍歷、后序遍歷二叉鏈表先序遍歷:訪問根節(jié)點,左子樹,右子樹的順序中序遍歷:訪問左子樹,根節(jié)點,右子樹的順序后序遍歷:訪問左子樹,右子樹,根節(jié)點的順序利用遞歸調用分別用以上三種順序遍歷二叉鏈表。交換二叉鏈表的左右孩子當二叉鏈表的結點左孩子或者右孩子都不為空時,利用遞歸調用,分別交換左子樹很右孩子的左右孩子,最后將根節(jié)點的左右孩子指針交換。主函數調用生成二叉鏈表的函數,從鍵盤輸入二叉鏈表的各個結點分別調用先序遍歷、中序遍歷、后序遍歷二叉鏈表函數,輸出所有結點交換二叉鏈表的左右孩子重復5.2結論:輸入各個結點:apple、pear、orange、banana、peach、grape、watermelon先序遍歷輸入與輸入一致中序遍歷輸出:orange、pear、banana、apple、grape、peach、watermelon后序遍歷輸出:orange、banana、pear、grape、watermelon、peach、apple交換二叉樹的左右孩子后先序遍歷輸出:apple、peach、watermelon、grape、pear、banana、orange編程中出現的問題:輸入的二叉鏈表左右子樹必須對稱,如果不對稱,交換二叉樹的左右子樹后,程序出錯,不知道出錯在哪,沒有調試成功。附錄(可包括源程序清單或其它說明)#include<iostream>#include<stdio.h>#include<stdlib.h>#include<string>usingnamespacestd;typedefstructLNode{//二叉鏈表數據存儲結構 chardata; structLNode*next;}LNode,*LinkList;typedefstructBiTNode{//二叉鏈表節(jié)點存儲結構 LinkListdata; structBiTNode*lchild; structBiTNode*rchild;//左右孩子指針}BiTNode,*BiTree;voidoutdata(LinkListL){//輸出數據 LinkListp; p=L->next; while(p!=NULL){ cout<<p->data; p=p->next; } cout<<"";}LinkListindata(){//輸入數據 LinkListL,p,r; charx; r=L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; cin>>x; while(x!='0'){ p=(LinkList)malloc(sizeof(LNode)); p->data=x; p->next=NULL; r->next=p; r=p; cin>>x; } returnL;}BiTreeCreateBiTree(BiTree&T){//先序遍歷生成二叉樹 LinkLists=indata(); if(s->next==NULL)T=NULL; else{ T=(BiTNode*)malloc(sizeof(BiTNode)); if(!T) exit(1); T->data=s; CreateBiTree(T->lchild);//建立左子樹 CreateBiTree(T->rchild);//建立右子樹 } returnT;}voidPreOrder(BiTreeroot){//先序遍二叉樹 if(root==NULL)return; outdata(root->data); PreOrder(root->lchild); PreOrder(root->rchild);}voidInOrder(BiTreeroot){//中序遍歷二叉樹 if(root==NULL)return; InOrder(root->lchild); outdata(root->data); InOrder(root->rchild);}voidPostOrder(BiTreeroot){//后序遍歷二叉樹 if(root==NULL)return; PostOrder(root->lchild); PostOrder(root->rchild); outdata(root->data);}voidexchange(BiTree&root){//交換二叉樹的左右孩子 BiTreetemp; if(root->lchild!=NULL||root->rchild!=NULL){ exchange(root->lchild); exchange(root->rchild); temp=root->lchild; root->lchild=root->rchild; root->rchild=temp; }}voidmain(){ BiTreeT; cout<<"請輸入水果名作為數的每個節(jié)點,空節(jié)點請輸入0,每個單詞后以0結尾"<<endl; CreateBiTree(T); cout<<"先序遍歷二叉樹:"; PreOrder(T); cout<<endl<<"中序遍歷二叉樹:"; InOrder(T); cout<<endl<<"后序遍歷二叉樹:"; PostOrder(T); cout<<endl<<"交換二叉樹的左右孩子"; exchange(T); cout<<endl<<"先序遍歷二叉樹:"; PreOrder(T); cout<<endl<<"中序遍歷二叉樹:"; InOrder(T); cout<<endl<<"后序遍歷二叉樹:"; PostOrder(T); cout<<endl;}運行結果:天津理工大學計算機科學與工程系實驗報告20XX至2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 糧庫員工年終工作總結
- 員工感恩公司演講稿范文(7篇)
- 2025年軟件銷售中介服務合同樣本
- 2025年大型購物中心加盟合同模板
- 2025年防腐施工及后續(xù)保修合同示范文本
- 區(qū)域白酒代理業(yè)務2025年合作協(xié)議書
- 閥門產品購銷申請協(xié)議2025
- 2025年個人貸款購房合同
- 2025年網絡及通信協(xié)議處理軟件項目規(guī)劃申請報告模范
- 2025年特種用途鋼絲及鋼絲繩項目規(guī)劃申請報告
- 《數字經濟學》 課件 賈利軍 專題3:數字時代下社會總資本再生產研究;專題4:數字貨幣與數字金融研究
- 中小學音樂課上的合唱訓練
- 《國有企業(yè)采購操作規(guī)范》【2023修訂版】
- 基于大單元的小學數學“教學評”一體化內涵及實踐
- 制程工程師年終總結匯報
- 第一章安培力與洛倫茲力單元教學設計課件-高二下學期物理人教版選擇性必修第二冊
- 碟式離心機安全操作及保養(yǎng)規(guī)程
- GB/T 27914-2023風險管理法律風險管理指南
- GB/T 16475-2023變形鋁及鋁合金產品狀態(tài)代號
- 跟崗學習匯報PPT演示課件
- 人口社會學PPT完整全套教學課件
評論
0/150
提交評論