版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí) 驗(yàn) 報(bào) 告一、 實(shí)驗(yàn)?zāi)康?. 掌握二叉樹的數(shù)據(jù)類型描述及二叉樹的特性。2. 掌握二叉樹的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)(二叉鏈表)的建立算法。3. 掌握二叉鏈表上二叉樹的基本運(yùn)算的實(shí)現(xiàn)。二、 實(shí)驗(yàn)內(nèi)容1. 實(shí)現(xiàn)二叉樹的層次遞進(jìn)。2. 將一顆二叉樹的所有左右子樹進(jìn)行交換。三、 實(shí)驗(yàn)與算法分析二叉樹的遍歷二叉樹的層次遍歷采用的是隊(duì)列。本題用一個(gè)一維數(shù)組來(lái)代替隊(duì)列,同時(shí)設(shè)置隊(duì)列的對(duì)頭指針和隊(duì)尾指針。算法分析:自定義3個(gè)函數(shù):結(jié)構(gòu) struct bitree;建立二叉鏈表的函數(shù) bitree *create();按層次遍歷二叉鏈表的函數(shù) void lorder(bitree *t)。結(jié)構(gòu) struct bitree
2、 中包括數(shù)據(jù)域和兩個(gè)指針域(一個(gè)指向左孩子,另一個(gè)指向右孩子)。建立二叉鏈表的函數(shù) bitree *create() 中先建立一個(gè)空隊(duì)列(條件是front=1,rear=0)。 然后建立二叉鏈表,用一個(gè)一維數(shù)組來(lái)代替隊(duì)列,存放輸入的結(jié)點(diǎn);輸入結(jié)點(diǎn)時(shí),必須按照完全二叉樹的形式輸入;如果非完全二叉樹,則必須給定一些假象結(jié)點(diǎn)(虛結(jié)點(diǎn)),使之完全符合完全二叉樹形式。當(dāng)我們輸入“,”時(shí)表示虛結(jié)點(diǎn)(結(jié)點(diǎn)不存在);輸入結(jié)點(diǎn)值時(shí),存在的結(jié)點(diǎn)則輸入它對(duì)應(yīng)的字符;最后以一個(gè)特殊字符“#”作為輸入的結(jié)束,表示二叉鏈表已經(jīng)完成。層次遍歷二叉鏈表的函數(shù) void lorder(bitree *t) 中遍歷結(jié)束條件為頭指
3、針下標(biāo)大于尾指針下標(biāo)。 將一棵二叉樹的所有左右子樹進(jìn)行交換建立二叉樹及先序void preorder(bitree *root)、中序void inorder(bitree *root)、后序void postorder(bitree *root)3種遍歷算法都寫成子函數(shù),然后分別在子函數(shù)中調(diào)用。然后再建立一個(gè)實(shí)現(xiàn)左右子樹交換的函數(shù)void leftTOright( bitree *r)。左右子樹交換的遍歷算法為:若二叉樹為空,算法結(jié)束;否則:交換左子樹的左子樹和右子樹;交換右子樹的左子樹和右子樹;交換左子樹和右子樹的位置。最后,是程序的主函數(shù)main(),它包含 建立二叉鏈表,輸出交換前二叉
4、樹的先序、中序、后序的結(jié)果,輸出交換后 二叉鏈表的先序、中序、后序的遍歷結(jié)果。輸出前后結(jié)果,方便比較順序變化。四、 可執(zhí)行程序及注釋二叉樹層次遍歷#include <iostream.h>typedef char elemtype;struct bitreeelemtype data;bitree *lchild,*rchild;bitree *create() /建立二叉連表bitree *q100; /定義q數(shù)組作為隊(duì)列存放二叉鏈表中的結(jié)點(diǎn),100為最大容量bitree *s; /二叉鏈表中的結(jié)點(diǎn)bitree *root; /二叉鏈表的根指針int front=1,rear=0
5、; /定義隊(duì)列的頭指針、尾指針char ch; /結(jié)點(diǎn)的data域值root=NULL;cout<<"請(qǐng)輸入結(jié)點(diǎn)值(不存在的結(jié)點(diǎn)用,表示,#表示結(jié)束)"<<endl;cin>>ch;while(ch!='#') /輸入值為#號(hào),算法結(jié)束s=NULL;if(ch!=',') /輸入數(shù)據(jù)不為逗號(hào),表示不為虛結(jié)點(diǎn),否則為虛結(jié)點(diǎn)s=new bitree;s->data=ch;s->lchild=NULL;s->rchild=NULL;rear+;qrear=s; /新結(jié)點(diǎn)或虛結(jié)點(diǎn)進(jìn)隊(duì)if(rear
6、=1)root=s;elseif(s!=NULL)&&(qfront!=NULL)if(rear%2=0) /rear為偶數(shù),s為雙親左孩子qfront->lchild=s;else /rear為奇數(shù),s為雙親右孩子qfront->rchild=s;if(rear%2=1)front+; /出隊(duì)cin>>ch;return root;void lorder(bitree *t) /按層次遍歷二叉樹bitree *q100,*p; /q代表隊(duì)列int f,r; /f、r類似于隊(duì)列頭指針、尾指針q1=t;f=r=1;cout<<"按層次
7、遍歷二叉樹的結(jié)果為:"while (f<=r)p=qf;f+; /出隊(duì)cout<<p->data<<" "if(p->lchild!=NULL) r+; /入隊(duì)qr=p->lchild;if(p->rchild!=NULL)r+; /入隊(duì)qr=p->rchild;cout<<endl;void main()bitree *t;t=create(); /建立二叉連表lorder(t); /按層次遍歷二叉樹將一棵二叉樹的所有左右子樹進(jìn)行交換#include<iostream.h>typ
8、edef char elemtype;struct bitreeelemtype data;bitree *lchild,*rchild;bitree *create() /建立二叉樹bitree *root,*s,*q100;int front=1,rear=0;char ch;root=NULL;cout<<"請(qǐng)輸入結(jié)點(diǎn)值,(,為虛結(jié)點(diǎn),#結(jié)束)"<<endl;cin>>ch;while(ch!='#')s=NULL;if(ch!=',')s=new bitree;s->data=ch;s->
9、;lchild=NULL;s->rchild=NULL;rear+;qrear=s; /進(jìn)隊(duì)if(rear=1)root=s;elseif(s!=NULL)&&(qfront!=NULL)if(rear%2=0)qfront->lchild=s;elseqfront->rchild=s;if(rear%2=1)front+; /出隊(duì)cin>>ch;return root;void preorder(bitree *root) /先序遍歷bitree *p;p=root;if (p!=NULL)cout<<p->data<&l
10、t;" "preorder(p->lchild);preorder(p->rchild);void inorder(bitree *root) /中序遍歷bitree *p;p=root;if(p!=NULL)inorder(p->lchild);cout<<p->data<<" "inorder(p->rchild);void postorder(bitree *root) /后序遍歷bitree *p;p=root;if(p!=NULL)postorder(p->lchild);postor
11、der(p->rchild);cout<<p->data<<" "void leftToright(bitree *r) /將二叉樹的左右子樹進(jìn)行交換bitree *root=r;if(root!=NULL)leftToright(root->lchild);leftToright(root->rchild);bitree *t=root->lchild;root->lchild=root->rchild;root->rchild=t;void main()bitree *root;root=creat
12、e(); /建立二叉樹cout<<endl<<endl<<"左右子樹交換前的遍歷結(jié)果"<<endl;cout<<"先序遍歷的結(jié)果"<<endl;preorder(root);cout<<endl;cout<<"中序遍歷的結(jié)果"<<endl;inorder(root);cout<<endl;cout<<"后序遍歷的結(jié)果"<<endl;postorder(root);cout<<endl;leftToright(root);cout<<endl<<endl<<"左右子樹交換后的遍歷結(jié)果"<<endl;cout<<"先序遍歷的結(jié)果"<<
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度文化藝術(shù)民辦非企業(yè)機(jī)構(gòu)捐贈(zèng)協(xié)議范本4篇
- 2025年度環(huán)保節(jié)能型建筑材料研發(fā)與應(yīng)用合同3篇
- 2025年度離婚協(xié)議書中財(cái)產(chǎn)分割及子女撫養(yǎng)費(fèi)調(diào)整范本4篇
- 二零二五版摩托車駕駛安全培訓(xùn)課程開發(fā)合同3篇
- 二零二五年度人工智能技術(shù)研發(fā)合同合4篇
- 二零二五版醫(yī)療健康信息SET協(xié)議共享合同3篇
- 玻璃鋼水箱施工方案
- 建筑設(shè)計(jì)與施工一體化合同(2篇)
- 彩鋼瓦合同范本(2篇)
- 2025年物流行業(yè)風(fēng)險(xiǎn)評(píng)估合作協(xié)議合同3篇
- 易普拉格科研管理系統(tǒng)
- 最終版 古城文化修復(fù)監(jiān)理大綱
- GB/T 43391-2023市場(chǎng)、民意和社會(huì)調(diào)查調(diào)查報(bào)告編制指南
- 拔罐技術(shù)操作考核評(píng)分標(biāo)準(zhǔn)
- 軟件無(wú)線電原理與應(yīng)用第3版 課件 第4-6章 軟件無(wú)線電硬件平臺(tái)設(shè)計(jì)、軟件無(wú)線電信號(hào)處理算法、信道編譯碼技術(shù)
- RB-T 099-2022 進(jìn)口食品供應(yīng)商評(píng)價(jià)技術(shù)規(guī)范
- 戒賭法律協(xié)議書范本
- (完整版)A4筆記本模板(可編輯修改word版)
- 競(jìng)選市級(jí)三好學(xué)生PPT
- 2024屆甘肅省蘭州市五十一中生物高一上期末檢測(cè)模擬試題含解析
- (國(guó)家基本公共衛(wèi)生服務(wù)項(xiàng)目第三版)7高血壓患者健康管理服務(wù)規(guī)范
評(píng)論
0/150
提交評(píng)論