![軟件基礎(chǔ)實(shí)驗(yàn)報(bào)告之二叉樹(shù)_第1頁(yè)](http://file4.renrendoc.com/view/9c99f41f0cbb34b6cd85f1a89657500a/9c99f41f0cbb34b6cd85f1a89657500a1.gif)
![軟件基礎(chǔ)實(shí)驗(yàn)報(bào)告之二叉樹(shù)_第2頁(yè)](http://file4.renrendoc.com/view/9c99f41f0cbb34b6cd85f1a89657500a/9c99f41f0cbb34b6cd85f1a89657500a2.gif)
![軟件基礎(chǔ)實(shí)驗(yàn)報(bào)告之二叉樹(shù)_第3頁(yè)](http://file4.renrendoc.com/view/9c99f41f0cbb34b6cd85f1a89657500a/9c99f41f0cbb34b6cd85f1a89657500a3.gif)
![軟件基礎(chǔ)實(shí)驗(yàn)報(bào)告之二叉樹(shù)_第4頁(yè)](http://file4.renrendoc.com/view/9c99f41f0cbb34b6cd85f1a89657500a/9c99f41f0cbb34b6cd85f1a89657500a4.gif)
![軟件基礎(chǔ)實(shí)驗(yàn)報(bào)告之二叉樹(shù)_第5頁(yè)](http://file4.renrendoc.com/view/9c99f41f0cbb34b6cd85f1a89657500a/9c99f41f0cbb34b6cd85f1a89657500a5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件基礎(chǔ)上機(jī)題之二叉樹(shù)PAGEPAGE3
年級(jí)10級(jí)班號(hào)5
學(xué)號(hào)
10064132專(zhuān)業(yè)自動(dòng)化
姓名
劉滿實(shí)驗(yàn)名稱(chēng)
二叉樹(shù)的相關(guān)操作實(shí)驗(yàn)類(lèi)型設(shè)計(jì)型綜合型創(chuàng)新型實(shí)驗(yàn)?zāi)康幕蛞髮?shí)驗(yàn)?zāi)康模?.掌握二叉樹(shù)的二叉鏈表存儲(chǔ)結(jié)構(gòu);2.掌握利用二叉樹(shù)創(chuàng)建方法3.掌握各種二叉樹(shù)的遍歷實(shí)現(xiàn)方法。實(shí)驗(yàn)要求:1.編寫(xiě)遞歸實(shí)現(xiàn)二叉樹(shù)的中序、先序和后序遍歷算法以及層次遍歷算法和二叉樹(shù)高度算法;2.編寫(xiě)主函數(shù)測(cè)試以上二叉樹(shù)的創(chuàng)建和遍歷函數(shù)。實(shí)驗(yàn)原理(算法流程)開(kāi)始
開(kāi)始輸出主菜單選擇界面輸出主菜單選擇界面輸入x的值其他:輸入x的值輸入項(xiàng)無(wú)效,x=?請(qǐng)重新選擇!x=?退出二叉樹(shù)高度層次遍歷后序遍歷中序退出二叉樹(shù)高度層次遍歷后序遍歷中序遍歷先序遍歷創(chuàng)建二叉樹(shù)輸入rturn的值輸入rturn的值rturn=N假rturn=N真結(jié)束結(jié)束組內(nèi)分工(可選)無(wú)實(shí)驗(yàn)結(jié)果分析及心得體會(huì)成績(jī)?cè)u(píng)定教師簽名:2010年月日#include"stdafx.h"#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX(a,b)((a)>(b)?(a):(b))/*對(duì)比較函數(shù)進(jìn)行宏定義*/#definelength100typedefchardatatype;typedefstructnode/*定義二叉樹(shù)的存儲(chǔ)方式*/{ datatypedata; structnode*lchild,*rchild;}bitree;bitree*creat_tree();/*創(chuàng)建二叉樹(shù)*/voidpreorder(bitree*p);/*對(duì)二叉樹(shù)進(jìn)行先序遍歷,p指向二叉樹(shù)的根結(jié)點(diǎn)*/voidinorder(bitree*p);/*對(duì)二叉樹(shù)進(jìn)行中序遍歷,p指向二叉樹(shù)的根結(jié)點(diǎn)*/voidpostorder(bitree*p);/*對(duì)二叉樹(shù)進(jìn)行后序遍歷,p指向二叉樹(shù)的根結(jié)點(diǎn)*/voidlevelorder(bitree*p);/*對(duì)二叉樹(shù)進(jìn)行層次遍歷,p指向二叉樹(shù)的根結(jié)點(diǎn)*/intdepth_bitree(bitree*root);/*計(jì)算二叉樹(shù)的深度*/voidmenu(){ printf("****************************************************\n"); printf("****************1.按先序遞歸方式創(chuàng)建二叉樹(shù)**********\n"); printf("****************2.先序遍歷二叉樹(shù)********************\n"); printf("****************3.中序遍歷二叉樹(shù)********************\n"); printf("****************4.后序遍歷二叉樹(shù)********************\n"); printf("****************5.層次遍歷二叉樹(shù)********************\n"); printf("****************6.輸出二叉樹(shù)的高度******************\n"); printf("****************7.退出******************************\n"); printf("****************************************************\n");}voidmain(){ intx,k; charrturn; bitree*root; while(1) { system("cls");//清屏 menu(); printf("請(qǐng)選擇相應(yīng)功能:"); fflush(stdin); scanf("%d",&x); switch(x) { case1://按先序遞歸方式創(chuàng)建二叉樹(shù) printf("請(qǐng)輸入各結(jié)點(diǎn)以完成二叉樹(shù)的創(chuàng)建:\n"); fflush(stdin); root=creat_tree(); printf("二叉樹(shù)創(chuàng)建完成,是否繼續(xù)?(N退出,任意鍵繼續(xù))\n"); fflush(stdin); scanf("%c",&rturn); if(rturn=='N') exit(0); break; case2://先序遍歷二叉樹(shù) printf("先序遍歷結(jié)果如下:\n"); preorder(root); printf("\n"); printf("先序遍歷完成,是否繼續(xù)?(N退出,任意鍵繼續(xù))\n"); fflush(stdin); scanf("%c",&rturn); //fflush(stdin); if(rturn=='N') exit(0); break; case3://中序遍歷二叉樹(shù) printf("中序遍歷結(jié)果如下:\n"); inorder(root); printf("\n"); printf("中序遍歷完成,是否繼續(xù)?(N退出,任意鍵繼續(xù))\n"); fflush(stdin); scanf("%c",&rturn); //fflush(stdin); if(rturn=='N') exit(0); break; case4://.后序遍歷二叉樹(shù) printf("后序遍歷結(jié)果如下:\n"); postorder(root); printf("\n"); printf("后序遍歷完成,是否繼續(xù)?(N退出,任意鍵繼續(xù))\n"); fflush(stdin); scanf("%c",&rturn); //fflush(stdin); if(rturn=='N') exit(0); break; case5://層次遍歷二叉樹(shù) printf("層次遍歷結(jié)果如下:\n"); levelorder(root); printf("\n"); printf("層次遍歷完成,是否繼續(xù)?(N退出,任意鍵繼續(xù))\n"); fflush(stdin); scanf("%c",&rturn); if(rturn=='N') exit(0); break; case6://輸出二叉樹(shù)的高度 k=depth_bitree(root); printf("二叉樹(shù)的高度為:\n"); printf("%d",k); printf("\n"); printf("二叉樹(shù)的高度輸出完成,是否繼續(xù)?(N退出,任意鍵繼續(xù))\n"); fflush(stdin); scanf("%c",&rturn); if(rturn=='N') exit(0); break; case7://退出 return; default: printf("輸入選項(xiàng)無(wú)效!請(qǐng)重新輸入!\n"); system("pause"); } } return;}bitree*creat_tree()/*創(chuàng)建二叉樹(shù)*/{ charc; bitree*root; scanf("%c",&c); if(c=='@')root=NULL;/*此時(shí)為空樹(shù)*/ else { root=(bitree*)malloc(sizeof(bitree));/*遞歸算法創(chuàng)建二叉樹(shù)*/ root->data=c; root->lchild=creat_tree(); root->rchild=creat_tree();}return(root);/*返回根結(jié)點(diǎn)指針*/}voidpreorder(bitree*p)/*對(duì)二叉樹(shù)進(jìn)行先序遍歷,p指向二叉樹(shù)的根結(jié)點(diǎn)*/{ if(p!=NULL)/*判斷二叉樹(shù)為非空樹(shù)*/ { printf("%c",p->data);/*采用遞歸算法先序遍歷二叉樹(shù)*/ preorder(p->lchild); preorder(p->rchild); } return;}voidinorder(bitree*p)/*對(duì)二叉樹(shù)進(jìn)行中序遍歷,p指向二叉樹(shù)的根結(jié)點(diǎn)*/{ if(p!=NULL)/*判斷二叉樹(shù)為非空樹(shù)*/ { inorder(p->lchild);/*采用遞歸算法中序遍歷二叉樹(shù)*/ printf("%c",p->data); inorder(p->rchild); } return;}voidpostorder(bitree*p)/*對(duì)二叉樹(shù)進(jìn)行后序遍歷,p指向二叉樹(shù)的根結(jié)點(diǎn)*/ { if(p!=NULL)/*判斷二叉樹(shù)為非空樹(shù)*/ { postorder(p->lchild);/*采用遞歸算法后序遍歷二叉樹(shù)*/ postorder(p->rchild); printf("%c",p->data); } return;}voidlevelorder(bitree*p)/*對(duì)二叉樹(shù)進(jìn)行層次遍歷,p指向二叉樹(shù)的根結(jié)點(diǎn)*/{ bitree*queue[length],*q; intfront,rear; front=rear=0; if(p!=NULL)/*判斷二叉樹(shù)為非空樹(shù)*/ { queue[rear++]=p;/*采用隊(duì)列,及遞歸算法對(duì)二叉樹(shù)進(jìn)行層次遍歷*/ while(front!=rear) { q=queue[front++]; printf("%c",q->data); if(q->lchild!=NULL)queue[rear++]=q->lchild; if(q-
溫馨提示
- 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í)工聘用合同協(xié)議
- 人力資源兼職獵頭合同協(xié)議
- 兼職合同協(xié)議
- 產(chǎn)學(xué)研一體化項(xiàng)目合作協(xié)議合同
- 產(chǎn)品銷(xiāo)售合同授權(quán)書(shū)范本
- 中外技術(shù)服務(wù)合同格式規(guī)范
- 個(gè)人與單位食堂合作合同
- 人力資源合同管理標(biāo)準(zhǔn)模板
- 事業(yè)單位保密合同范本
- 個(gè)人貸款合同范本及詳解
- 工程建設(shè)行業(yè)標(biāo)準(zhǔn)內(nèi)置保溫現(xiàn)澆混凝土復(fù)合剪力墻技術(shù)規(guī)程
- 液壓動(dòng)力元件-柱塞泵課件講解
- 人教版五年級(jí)上冊(cè)數(shù)學(xué)脫式計(jì)算100題及答案
- 屋面細(xì)石混凝土保護(hù)層施工方案及方法
- 2024年1月山西省高三年級(jí)適應(yīng)性調(diào)研測(cè)試(一模)理科綜合試卷(含答案)
- 110kv各類(lèi)型變壓器的計(jì)算單
- 雙減政策之下老師如何打造高效課堂
- 5A+Chapter+1+Changes+at+home+課件(新思維小學(xué)英語(yǔ))
- 安徽省2023年中考數(shù)學(xué)試卷(附答案)
- 護(hù)工(陪護(hù))培訓(xùn)教材(完整版)資料
- 機(jī)械加工生產(chǎn)計(jì)劃排程表
評(píng)論
0/150
提交評(píng)論