数据结构二叉树实验报告

上传人:ba****u6 文档编号:138473903 上传时间:2022-08-21 格式:DOCX 页数:14 大小:130.15KB
收藏 版权申诉 举报 下载
数据结构二叉树实验报告_第1页
第1页 / 共14页
数据结构二叉树实验报告_第2页
第2页 / 共14页
数据结构二叉树实验报告_第3页
第3页 / 共14页
资源描述:

《数据结构二叉树实验报告》由会员分享,可在线阅读,更多相关《数据结构二叉树实验报告(14页珍藏版)》请在装配图网上搜索。

1、一、实验目的和要求(1)掌握树的相关概念,包括树、节点的度、树的度、分支节点、叶子节点、孩子节点、双亲节 点、树的深度、森林等定义。(2)掌握树的表示,包括树形表示法、文氏图表示法、凹入表示法和括号表示法等。(3)掌握二叉树的概念,包括二叉树、满二叉树和完全二叉树的定义。(4)掌握二叉树的性质。(5)重点掌握二叉树的存储结构,包括二叉树顺序存储结构和链式存储结构。(6)重点掌握二叉树的基本运算和各种遍历算法的实现。(7)掌握线索二叉树的概念和相关算法的实现。(8)掌握哈夫曼树的定义、哈夫曼树的构造过程和哈夫曼编码的产生方法。(9)掌握并查集的相关概念和算法。(10)灵活运用二叉树这种数据结构解

2、决一些综合应用问题。二、实验内容注:二叉树b为如图7-123所示的一棵二叉树b图 7-123实验 编写一个程序,实现二叉树的各种运算,并在此基础上设计一个程序完成如下功能:(1)输出二叉树b;(2)输出H节点的左、右孩子节点值;输出二叉树b的深度;(4)输出二叉树b的宽度;(5)输出二叉树b的节点个数;(6)输出二叉树b的叶子节点个数。实验里的算法。并对图7-123所示的二叉树b给出求解结果。设计一个程序,实现二叉树的先序遍历、中序遍历和后序遍历和非递归算法,以及层次变量实验(1)输出所有的叶子节点;(2)输出所有从叶子节点到根节点的路径;输出(2)中的第一条最长的路径。三、实验过程描述实现二

3、叉树的各种的基础程序如下:华cppinclude Uinclude ndeFinc Naxsize 100 tppedef char ElemType; tpppdeF struct nodeElemType data;struct node *lchild;struct node rchild; BTHode;数据元素uoid CreteBTNode(BTNode *tcb,char str)由str串创建二叉梃BTNodp *StMaxSize,*p=NULL;int top=-1,k J=0;char ch;b二NULL;ch-strj;建立的二叉树初始时为空uMle (ch,-0)/s

4、tr扫描充时帽环switch(ch)case (-:top*;Sttop=p;k=1; break;case )-:topjbrcak;case ,:k-2; break;default:p=(BTNode *)malloc(slzeoF(BTHode); p-data-ch:p-lchild-p-rchild-NULL:if (b=NULL) b=p; else为左结点为右结点已建立二叉树根结点对如图7-123所示的二叉树,设计一个程序,完成如下功能:switch(k)case 1:Sttop-lchild=p;break;case 2:St|top-rchildp;break;心 cppB

5、TNode *F=aNMe(BTNQ 状吝mMMyx X、尚回 a%Q*x3gDH-jh#BTNodeif (dbnull)regrn HULL” lg i-h(bldannx) rcrurn D;elsePHFindN0deDIlcnil?x)5if (PTrnlLL也|:-3 p;Qlsoegn FindHod,blchild,x)JBTHOd, XLChildNodzBTzodF 83ertMn polchild”BTNode *RcrdldNode(BTNQde *p,也rrcrn plvMhild,、鬲回瞬、疝3浒艰虫牖容游卑in- BT Node),prtzBT Node g、ll

6、:l:b3iJXhlinr IcnildaepLgild以ep;if (b;HUL5心 cppif (b;zUL5Mrrm=; 、园酸哥一UI*elseIchilddppuBTNOdgezxbvlchild) j 、/帝:-s-lllchild【sp t-cnilmwpMB 一 NodeDeprn(Dcnild 二 sz此 7 寸薯丽瀛*-CMlaQep rerrurnqchilddepchilddep)2 (ichddep,e:bc=riiddep,l);us.d DispBTHOdzBTHOde 83、污甜1|0洲iEellR 遂 if 2NULLifbigild:HULL - b、CMl

7、d;zUL5 prinuv:二MSPBTNOdzbJlchils;*bchildHNULLpfinrrF;:); DispBTNOdRavrcnila 二pi3rrfJ=sBTWbnMBTNOde*io、/ub338s?cnt:inrr、薜洒3讪窝流/B-百S点 、爵a咪rQu【苔 XSlZR 二 、MK 或 JFJJXMJi 与或漫 s-rrfonr*r - 、Mxw裆 ES 器潭 inrrInunpnaxH.yn;T。? r e Z/7呻沪翌*明乒 if (b;HULc华 *Lgo7-l. cppif (b!-NULL)rear*;QuKear.p-b;Qufrear.lno=1;whil

8、e (rear!=Front)lchlldf=NULL)rear*;Qufrear.p=b-lchild;Qurear.lno-lnun1;IF (D-rchiidf=NULL)恨结点砍列木号为1 为空队头出队左孩子入队右孩子入伙rear*;Qurear.p=D-rchild;Qurear.lno-lnun*1;nax-B;lnun-1;i-1;while (i=rear)n=0;while (iraax) nax=n;)return roax;return max:elsereturn 0;int Nodes (Bl Node/状二叉树D的结点个数lchild=NULL 0 b-rchlld

9、=NULL) return 1;elselchild);nun2=Hodes(b-rchild);return (nural*nun2*l);Int LeaFNodes(BlNode *D)求二叉捌D的叶孑4吉点个数lchild=NULL 0 b-rchlld=NULL) return 1;elselchild);nun2=LeaFN()des(b-rchild);return (nuM*nun2);A111I Ixlrnr二.2荔|1任芝)-(e2p -MT e,品“盘 J4AMq 二2) s 3 OIr.mDN :嫌4-迁diRsq 二(己E*MJUr.3p 书眠Hsq “(elpduep

10、oNW.G/p% “暇陞g-qMlls) 回110 kh?- 取11(2 frularAUW wu:d )宴抒= rzw wu:d )宴抒.& rM、d“(.燃冲.栏1=二g .品我-w.tds-JAdin f (drpnHP 二 IPMnd =.卬枢禺代.方 . c、Ct t 1 c 了:*基阳眠:上三=#云 大拦,Dcdl.*。2犬中燃为=(nnHLdo%(dspoHD二 SIHdI(TlnzLdJ B 二HJoDONBUlHud (.:.嗟iffHQr)u.w;d 二.c/.:nu-Md 二 qrPOHMdg-Hfir莓Kl 1丑潺(=.rr_dfru/Lnuw ft.( 二 )吧(zJ

11、zJM-rxsroMM.MqvPONJLadwM二 wdEd%q8oPON18apoHlaD53ON*g1 A5 f(q* apoNlsSOPON %-H 二 &pozlqfpu。g rq* apoN-8oDON18d5IG wo / w MONlsluddQWOHW 2SX 二 +域+a叵即、ou-gep-sn sxa IM3X3I SOJAXOJ sxa UL.OAXO IMaJwxal UL.OWO CD18 fpuqoM &PDU AGnzs 了二5T 3POU tn行5 5%p adlselUJCJDOU t:oDods f edlulwlujp-uU.JPW5;一v Tb-4x。3

12、程序执行结果如下:实验程序设计如下:S。2-2. cppttinclude includenialloc.il ndcFinc rfaxsize 100 typedef char ElenType; tpppdeF struct node (ElemType data;struct node *lchild;struct node rchild; BTNode;数据元素extern uoid CreateBTNode(BTNode *&b,char *str); extern void DispBTNode(BINode b);uoid PreOrder(BTNode *b)光序遍矛的递归岸法

13、lchild);递归访|耳左于PreOrder (b-rchild);递归访同右手核uoid PreOrder1(BTNude *b)BTNode StHaxSizer*p;int top=-1;if (b!-NULL)-1)/曜结点入栈,徵不为空时循环P-Sttop;退栈并访问铉结点top-; printf(,e%c .,p-gta); if (p-rchild?-HULL)/佑孩子人栈S。2-2. cppuoid (iF (p-rchild?-NULL)右孩子入栈top*;Sttop-p-rchild; _IF (p-lcnild!=NULL)孩子入栈icniid;printFCW);In

14、OrderCBTHode b)中序遍历的递归其法if (Df=NULL)lchild);printF(-,%cInOrder(b-rchild);JnOrderlfBTHode *b)子子质右问 13问归BTNode *StMaxSize,*p;int top=-1;if (bf=NULL)p 二 b;while (top-i | p?=NULL)lchlid;p-Sttop;top;prlntf(Mic -,.p-data);p-p-rchild;printFCAn*);后序遍历的递归岸法uoid PostOrder(RTNode *b)if (b!-HULL)Postorder(D-lch

15、il(l); 递归访问左子捌 PostOrder(b-rchild); 递归方同右号椅 printFCU -,b-data); 访问根结点uoid Post0rder1(BTNodeBTNodp *StMaxSize;栈指针置初值BTNode *p; int flag.top1; if (b?二NULL)dowhile (D?=NULL)将瑚所有左结点入栈lchild;P-NULL;P指向当前结点的前一个己访问的姑点flag-1; while (topt=-1 & flag) rchild=p)石子树不存在或己被访何,访问之( printFCc b-data); 访问b 结点 top; Pb;

16、P指向则被访何的结点 else ( b=b-rchild;t指向右子树fiago; vjfiile (topt=-l); printfCAn-);uoid TrauLeupl(RTN()de b)data);rear* ;结点指针进入伙列Qurear-b;111d111S。2-2. cp/淼列不为空Qurear-b; utiile (rparf=frant)f ront-(f ront*1 JMaxSize;b=QuFrcnt;IF (D-lChlld!=NULL)魇勰器,并入伙列printf(-%c -,b-lchild-data);rear=(rear*l)V;llaxsi2e;Qurea

17、r-b-lchild;if (b-rchild?-HULL)输出右孩子.并入ILl列rchlld-dat);rear-(rear*1iHaxSize;Qurear=b-rchild;printFCAn*);uoid nain()BTNode D;CreateBTHode(b,A(B(DE(H(JK(LrH(FH),C(FtG( prlntFC* 二只树B:);DlspBTNgQ(b) ;printf(-nn-) printf (-层次遍历序列小TrauLpuel(b);列:o);Pre0rder(b);printf Cn-);Jffi:M);PreOrderl(b);printF(-n-);列

18、n“);苍二);mOrdRr(b;pr:int:f(.n);jff:M);lnorderl(b):printfprlntFCAn-);print,(“先序遍历printFC 涕归 prln”(非逐归: printfL中序遍凤 printFCj 弟归!printFC- 非谖打 print,后序渥溟辰lkn“);S。2-2. cpp点ntf(“后序遍历应列八n“);printFC涕归 mt:-);PostOrder(b);PrintFCnf,);printFC-非逐归算诿:.);Pogtos?rl(D);printf(.n.);程序执行结果如下:13Jnl xg; C:FmgraB FilesYl

19、i cr osof t Visual Studi oXByPr oj ectsPr oj7_2Miebug:,kFroj7_2- exe二叉树 hWBD.EHJMLW.N)CF.G5) 房次遍历序列山BCDEFGHIJKLMN序非 先历归归遍递固列法法序葺列法注 序膏 力归归 遍圈 序非fifi序非历归归遍递递fiflPress any key to continue实验程序设计如下:S fT-3. cppttinclude includenialloc.il MdeFine HaxSize 100 tppedeF char ElcnType;typedeF struct node素 孩孑 孩

20、子ElenType data;struct node *lchild;struct node rchild; BINode;uoid AllPath(BTHode *b)extern uoid CreateBTNude(BTNu(le ,char *str); 在ago7T cpp文件中 extern void DispBTNode(BlNode *D);struct snodeBTNode *node; int parent; QuMaxSize;int front,mar,p;Front-rear-1:rear*;Qurear.node=b;Qurear .parent1: while (

21、frontrear)存放双掣点在从列 豪职安?届指针 置弘列为空队狗队列不为空front*;b-QuFrcnt.node;if (b-lchild=NULL.任为叶孑结点Printf(- %(:到腺吉点路径二“,b-data); p=front;while (Qup.parent?-1)S eT-3. cp. IExlwhile (Qup.parent?-1)printf(c a(,Qup.node-data); p-Qup.parent;printFC*%cn-Qup.node-data):if (b-lchildf-HULL)/佐孩子入队列rear*;(u|rear .nodGb-lcni

22、id;Qurear.parent-front; _if (D-rchil(l?-HULL)/佑孩子入队列rchild; Qurear.parent二Front;)uoid fillPathKBlNode *D,Eleralype path .Int pathlen)int 1;if (b!-NULL)lChll(l=HULL D-rchild=NULL) 皿为叶子结点 data,b-data);for (i-pathien-l;i-o:l) printffV pathti);printf(-n-); elseS fT-3. cppelsepathpathlen-b-data;扬当前结点散入路径

23、中Pathlen;蛭寥度增1AllPatm( o-ichlid, path .pathlen):递归扫清左子上AllPath1(b-rchild,path,pathlen);递归扫了苗右字*pathlen;恢复环挽uoid LongPath(BlNode *DfEleralype path,int pathlen,Eleniiype longpath,int &longpathlen)int i;if (NULL)if(pathlenlongpathlen)若当前路径更长,将路径保存在longpaUi中for (i-pathlen-1;i-0;i-) longpathi=pathi;longp

24、athlen-pathlen:else将当葡堵点放入路径中 路径长度增1pathrpathlen=b-data; pathlen*; _LDngPath(b-lchild ,pathpathlRn,longpath,l(m9pal:mn); 质归扫而左子色LongPath(b-rchild pathpathlenlongpathylongpathlen); 短J引扇右孑皆 pathlen;恢具环境uoid DispLeaf(BIHode *b) l/ IS eT-3. cpuoid DispLeaF(BIHode *b)(IF (DENULL) if (b-lchildHULL & b rch

25、ildHULL) printf(-%c -b-data);elselchild);DispLeaF(b-rchild);uoid naln()BTNode xh;ElenType pathMaxSize 9longpathliax$ize;int irlongpathlen-0;CreateBTNode(b/-A(B(D,E(H(J,K(L,H(,N),C(F,G( J)D; printFC-n 二叉:m);DlspBTNode(b);prlntfC-nn-); printf (B, b的叶羊结点:);DispLedf(b) ;printf (XoVn); prlntFC* AllPath:n

26、-);AllPath(b);prlntf(-ne);printf(- AllPatm:n*);niiPathl(t).patri.o):printFCAn-): LongPath(b,path v6ylongpathlongpathlen);prlntf(第一条常*掐泾长度沈dW.longpaSlm); printf(-条靠长鲜径:);for (i=longpathlen;i=O;i-)printFC,iongpatni);printf C,nn,);程序执行结果如下:g; C:FmgraB FilesYli cr osof t Visual Studi oVByPr oj ectsPr oj

27、TSMJiebucFrojTS. exesue 路路路路路路 点点点点点点 士I士中士d士m士工士d h艮艮灵a:四艮乏八 t-tIKIT.n.lT.1 11 11 Hi V Bui 11 11 V pc字至主至至字 1 D F I J L N 1b的叶子结点二D J L N F IDBA FCfiIGCAJHEBfiLKHEBfi径食e隹 路路路路路路 点点点点点点 士 ti 士 f 士工士 d 士 f 士 h乏八艮艮艮艮艮 t41441T1t1T1 PC字至手字至至 1 D J L N F I 1ANMKHEB AB fiE B AH E B Afi第一卷慧长路筐长度:7 第一条取W路径”N M K H E B fiPress any key to continue

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!