




免費(fèi)預(yù)覽已結(jié)束,剩余6頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu) 實(shí) 驗(yàn) 報(bào) 告 1.實(shí)驗(yàn)?zāi)康暮蛢?nèi)容:掌握二叉樹(shù)基本操作的實(shí)現(xiàn)方法2.程序分析2.1存儲(chǔ)結(jié)構(gòu) 鏈?zhǔn)酱鎯?chǔ)2程序流程 2.3關(guān)鍵算法分析算法一:Create(BiNode* &R,T data,int i,int n)【1】算法功能:創(chuàng)建二叉樹(shù)【2】算法基本思想:利用順序存儲(chǔ)結(jié)構(gòu)為輸入,采用先建立根結(jié)點(diǎn),再建立左右孩子的方法來(lái)遞歸建立二叉鏈表的二叉樹(shù)【3】算法空間時(shí)間復(fù)雜度分析:O(n)【4】代碼邏輯: 如果位置小于數(shù)組的長(zhǎng)度則 創(chuàng)建根結(jié)點(diǎn) 將數(shù)組的值賦給剛才創(chuàng)建的結(jié)點(diǎn)的數(shù)據(jù)域 創(chuàng)建左子樹(shù),如果當(dāng)前結(jié)點(diǎn)位置為i,則左孩子位置為2i 創(chuàng)建右子樹(shù),如果當(dāng)前結(jié)點(diǎn)位置為i,則右孩子位置為2i+1 否則R為空 算法二:CopyTree(BiNode*sR,BiNode* &dR))【1】算法功能:復(fù)制構(gòu)造函數(shù)【2】算法基本思想:按照先創(chuàng)建根結(jié)點(diǎn),再遞歸創(chuàng)建左右子樹(shù)的方法來(lái)實(shí)現(xiàn)。【3】算法空間時(shí)間復(fù)雜度分析:O(n)【4】代碼邏輯: 如果源二叉樹(shù)根結(jié)點(diǎn)不為空 則 創(chuàng)建根結(jié)點(diǎn) 調(diào)用函數(shù)自身,創(chuàng)建左子樹(shù) 調(diào)用函數(shù)自身,創(chuàng)建右子樹(shù) 將該函數(shù)放在復(fù)制構(gòu)造函數(shù)中調(diào)用,就可以實(shí)現(xiàn)復(fù)制構(gòu)造函數(shù)算法三:PreOrder(BiNode*R)【1】算法功能:二叉樹(shù)的前序遍歷【2】算法基本思想:這個(gè)代碼用的是優(yōu)化算法,提前讓當(dāng)前結(jié)點(diǎn)出棧。【3】算法空間時(shí)間復(fù)雜度分析:O(n)【4】代碼邏輯(偽代碼) 如果當(dāng)前結(jié)點(diǎn)為非空,則 訪問(wèn)當(dāng)前結(jié)點(diǎn) 當(dāng)前結(jié)點(diǎn)入棧 將當(dāng)前結(jié)點(diǎn)的左孩子作為當(dāng)前結(jié)點(diǎn) 如果為空 則棧頂結(jié)點(diǎn)出棧 則將該結(jié)點(diǎn)的右孩子作為當(dāng)前結(jié)點(diǎn) 反復(fù)執(zhí)行這兩個(gè)過(guò)程,直到結(jié)點(diǎn)為空并且??账惴ㄋ模篒nOrder(BiNode*R)【1】算法功能:二叉樹(shù)的中序遍歷【2】算法基本思想:遞歸【3】算法空間時(shí)間復(fù)雜度分析:未知【4】代碼邏輯: 如果R為非空: 則調(diào)用函數(shù)自身遍歷左孩子 訪問(wèn)該結(jié)點(diǎn) 再調(diào)用自身訪問(wèn)該結(jié)點(diǎn)的右孩子算法五:LevelOrder(BiNode*R)【1】算法功能:二叉樹(shù)的層序遍歷【2】算法基本思想:【3】算法空間時(shí)間復(fù)雜度分析:O(n)【4】代碼邏輯(偽代碼): 若根結(jié)點(diǎn)非空,入隊(duì) 如果隊(duì)列不空 對(duì)頭元素出隊(duì) 訪問(wèn)該元素 若該結(jié)點(diǎn)的左孩子為非空,則左孩子入隊(duì); 若該結(jié)點(diǎn)的右孩子為非空,則右孩子入隊(duì); 算法六:Count(BiNode*R)【1】算法功能:計(jì)算結(jié)點(diǎn)的個(gè)數(shù)【2】算法基本思想:遞歸【3】算法空間時(shí)間復(fù)雜度分析:未知【4】代碼邏輯: 如果R不為空的話(huà) 調(diào)用函數(shù)自身計(jì)算左孩子的結(jié)點(diǎn)數(shù) 調(diào)用函數(shù)自身計(jì)算右孩子的結(jié)點(diǎn)數(shù) template int BiTree:Count(BiNode*R) if(R=NULL)return 0; else int m=Count(R-lchild); int n=Count(R-rchild); return m+n+1; 算法七:Release(BiNode*R)【1】算法功能:釋放動(dòng)態(tài)內(nèi)存【2】算法基本思想:左右子樹(shù)全部釋放完畢后再釋放該結(jié)點(diǎn)【3】算法空間時(shí)間復(fù)雜度分析:未知【4】代碼邏輯: 調(diào)用函數(shù)自身,釋放左子樹(shù) 調(diào)用函數(shù)自身,釋放右子樹(shù) 釋放根結(jié)點(diǎn) 釋放二叉樹(shù) template void BiTree:Release(BiNode*R) if(R!=NULL) Release(R-lchild); Release(R-rchild); delete R; template BiTree:BiTree() Release(root); int main() int a10=1,2,3,4,5,6,7,8,9,10; BiTree BTree(a,10); BiTreeTree(BTree); BTree.PreOrder(BTree.root); coutendl; Tree.PreOrder(Tree.root); coutendl; BTree.InOrder(BTree.root); coutendl; Tree.InOrder(Tree.root); coutendl; BTree.PostOrder(BTree.root); coutendl; Tree.PostOrder(Tree.root); coutendl; BTree.LevelOrder(BTree.root); coutendl; Tree.LevelOrder(Tree.root); coutendl; int m=BTree.Count(BTree.root);coutmendl; return 0; 3.測(cè)試數(shù)據(jù):int a10=1,2,3,4,5;1 2 4 5 31 2 4 5 34 2 5 1 34 5 2 3 11 2 3 4 554.總結(jié):4.1:這次實(shí)驗(yàn)大多用了遞歸的算法,比較好理解。4.2:新得體會(huì):在創(chuàng)建二叉樹(shù)的過(guò)程中,在沒(méi)有思路的時(shí)候可以巧妙的利用遞歸算法。但是我的代碼仍然應(yīng)該改進(jìn),應(yīng)該進(jìn)一步簡(jiǎn)化,減少算法的時(shí)間復(fù)雜度和空間復(fù)雜度。#includeusing namespace std;templateclass BiNodepublic:T data;BiNode*lchild;BiNode*rchild; ; templateclass BiTree public: BiNode*root;BiTree(T data,int n);BiTree(BiTree& r);void PreOrder(BiNode*R);void InOrder(BiNode*R);void PostOrder(BiNode*R);void LevelOrder(BiNode*R);int Count(BiNode*R);BiTree();private:void Create(BiNode* &R,T data,int i,int n);void CopyTree(BiNode*sR,BiNode* &dR);void Release(BiNode*R); ; template void BiTree: Create(BiNode* &R,T data,int i,int n) if(i=n&datai-1) R=new BiNode; R-data=datai-1; Create(R-lchild,data,2*i,n); Create(R-rchild,data,2*i+1,n); else R=NULL; template BiTree:BiTree(T data,int n) Create(root,data,1,n); template void BiTree:CopyTree(BiNode*sR,BiNode* &dR) if(sR=NULL) dR=NULL; else dR=new BiNode; dR-data=sR-data; CopyTree(sR-lchild,dR-lchild); CopyTree(sR-rchild,dR-rchild); template BiTree:BiTree(BiTree& p) CopyTree(p.root,this-root);/this? template void BiTree:PreOrder(BiNode*R) BiNode*S100; int top=-1; while(top!=-1)|(R!=NULL) if(R!=NULL) coutdatalchild; elseR=Stop-;R=R-rchild; template void BiTree:InOrder(BiNode*R) if(R!=NULL) InOrder(R-lchild); coutdatarchild); template void BiTree: PostOrder(BiNode*R) if(R!=NULL) PostOrder(R-lchild); PostOrder(R-rchild); coutdata ; template void BiTree:LevelOrder(BiNode*R) BiNode*queue100; int f=0,r=0; if(R!=NULL) queue+r=R; while(f!=r) BiNode*p=queue+f; coutdatalchild!=NULL) queue+r=p-lchild; if(p-rchild!=NULL) queue+r=p-rchild; template int BiTree:Count(BiNode*R) if(R=NULL)return 0; else int m=Count(R-lchild); int n=Count(R-rchild); return m+n+1; template void BiTree:Release(BiNode*R) if(R!=NULL) Release(R-lchild); Release(R-rchild); delete R; template BiTree:BiTree() Release(root); int main() int a5=1,2,3,4,5; BiTree BTree(a,5); BiTreeTree(BTree); BTree.PreOrder(BTree.root); coutendl;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)制菜在2025年餐飲業(yè)環(huán)保政策下的機(jī)遇與挑戰(zhàn)報(bào)告
- 保險(xiǎn)承保題目及答案
- 安全職稱(chēng)考試題庫(kù)及答案
- 康復(fù)醫(yī)療器械市場(chǎng)創(chuàng)新產(chǎn)品應(yīng)用前景預(yù)測(cè):2025年需求分析報(bào)告
- 安全生產(chǎn)禁令試題及答案
- 培訓(xùn)課件有沒(méi)有版權(quán)
- 2025年成人教育終身學(xué)習(xí)平臺(tái)運(yùn)營(yíng)效率與市場(chǎng)占有率研究報(bào)告
- 個(gè)人養(yǎng)老金制度2025年對(duì)能源行業(yè)投資的影響與機(jī)遇分析報(bào)告
- 智慧交通系統(tǒng)2025年交通流量預(yù)測(cè)技術(shù)應(yīng)用與智能交通設(shè)施報(bào)告001
- 胖東來(lái)管理培訓(xùn)課件
- 《民用無(wú)人駕駛航空器系統(tǒng)分類(lèi)及分級(jí)》考試題庫(kù)(含答案)
- 國(guó)際化競(jìng)爭(zhēng)格局下的動(dòng)漫游戲行業(yè)發(fā)展策略
- GB/T 44087-2024北斗三號(hào)區(qū)域短報(bào)文通信用戶(hù)終端技術(shù)要求與測(cè)試方法
- GB/T 43868-2024電化學(xué)儲(chǔ)能電站啟動(dòng)驗(yàn)收規(guī)程
- 中醫(yī)藥健康管理服務(wù)流程
- 資本論在中國(guó)智慧樹(shù)知到期末考試答案2024年
- 國(guó)家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 6-16-02-06 油氣水井測(cè)試工 人社廳發(fā)202226號(hào)
- 繼電保護(hù)配置及整定計(jì)算
- 初高中物理銜接課件
- 血管導(dǎo)管相關(guān)血流感染預(yù)防與控制
- 第四次教育革命:人工智能如何改變教育
評(píng)論
0/150
提交評(píng)論