数据结构树和森林实验报告Word格式文档下载.docx

上传人:b****5 文档编号:17099735 上传时间:2022-11-28 格式:DOCX 页数:11 大小:67.69KB
下载 相关 举报
数据结构树和森林实验报告Word格式文档下载.docx_第1页
第1页 / 共11页
数据结构树和森林实验报告Word格式文档下载.docx_第2页
第2页 / 共11页
数据结构树和森林实验报告Word格式文档下载.docx_第3页
第3页 / 共11页
数据结构树和森林实验报告Word格式文档下载.docx_第4页
第4页 / 共11页
数据结构树和森林实验报告Word格式文档下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数据结构树和森林实验报告Word格式文档下载.docx

《数据结构树和森林实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构树和森林实验报告Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。

数据结构树和森林实验报告Word格式文档下载.docx

第二题:

2>

求森林的高度。

full41.cbt

letter.cbt

遍历每一棵树,寻找高度的最大值。

可以设立一个私有成员来记录数的高度。

第三题:

3>

按层次方式遍历森林。

先访问第一层结点,并将它放入队列中,并反复从队列中取结点,访问其孩子结点,直至访问到叶子结点。

第四题:

4>

输出一个森林中每个结点的值及其对应的层次数。

使用递归函数来访问森林,同时输出层次数及结点值,使用形参来传递当前层次数

第五题:

5>

输出一个森林的广义表形式,如下图中的森林的输出为:

(a(b(c,d,e,f),g(h,i,j),k(l,m,n)),o(p(q)),r(s(t(u)),v(w(x,y,z))))

使用递归函数调用,若当前节点有左孩子,则先输出‘(’再访问下一节点,若当前节点的右指针不为空,则先输出‘,’再访问下一结点。

实验测试数据

 

实验程序

#include<

iostream>

usingnamespacestd;

typedefcharElemType;

#defineMAX200

typedefstructCSNode

{

ElemTypedata;

structCSNode*firstchild,*nejtsibling;

}

CSNode,*CSTree;

typedefstructBTNode

structBTNode*lchild,*rchild;

}BTNode,*BTree;

classFOREST

public:

FOREST();

CSTreereturnT();

//输出森林的根结点

BTreereturnBT();

//输出森林的根结点

CSTreecreat(CSTree&

T);

//创建森林

BTreechange(CSTree&

T,BTree&

BT1);

//将森林转换成为二叉树

voidfirst(CSTree&

T,inti);

//第一题:

按照先序遍历的方式来输出树林每个结点的值以及层次

voidsecond(CSTree&

//第五题:

输出一个森林的广义表形式

voidthird(constCSTree&

//第三题:

voidfourth(BTree&

BT);

//第四题:

按照先序遍历的方式来输出二叉树每个结点的值

inthigth(constCSTree&

//第二题:

求森林的高度

private:

CSTreeT;

//森林的头结点

BTreeBT;

//二叉树的头结点

inthigh;

//森林的高度

};

FOREST:

:

FOREST()

high=0;

T=NULL;

BT=NULL;

CSTreeFOREST:

returnT()

returnT;

BTreeFOREST:

returnBT()

returnBT;

creat(CSTree&

T)

inta,b;

T=newCSNode;

cin>

>

T->

data>

a>

b;

if(a==1)T->

firstchild=NULL;

elsecreat(T->

firstchild);

if(b==1)T->

nejtsibling=NULL;

nejtsibling);

}

change(CSTree&

BT)

{

if(!

T){BT=NULL;

returnNULL;

}

BT=newBTNode;

BT->

data=T->

data;

firstchild)BT->

lchild=NULL;

elsechange(T->

firstchild,BT->

lchild);

nejtsibling)BT->

rchild=NULL;

nejtsibling,BT->

rchild);

voidFOREST:

first(CSTree&

T,inti)

T)return;

cout<

data<

"

"

i<

endl;

if(T->

firstchild)first(T->

firstchild,i+1);

nejtsibling)first(T->

nejtsibling,i);

second(CSTree&

data;

firstchild){

'

('

;

second(T->

}

nejtsibling){

'

elsecout<

)'

third(constCSTree&

CSTreeS[MAX];

CSTreep;

intj=1,i=1;

p=T;

while(p){

S[i++]=p;

p=p->

nejtsibling;

while(i!

=j)

{

CSTreeq;

q=S[j++];

q->

data<

q=q->

firstchild;

while(q){

S[i++]=q;

nejtsibling;

fourth(BTree&

BT)return;

BT->

if(BT->

lchild)fourth(BT->

rchild)fourth(BT->

intFOREST:

higth(constCSTree&

inths,hb;

return0;

hs=higth(T->

firstchild);

hb=higth(T->

high=(hs+1)>

hb?

(hs+1):

hb;

returnhigh;

intmain(){

FORESTf_1,f_2,f_3,f_4,f_5;

intchioce;

cout<

数据结构实验五--树和森林应用实验"

第1题:

将一棵树(或森林)转换为二叉树"

第2题:

求森林的高度"

第3题:

按层次方式遍历森林"

第4题:

输出一个森林中每个结点的值及其对应的层次数"

第5题:

输出一个森林的广义表形式"

退出程序:

0"

请选择一道题"

cin>

chioce;

switch(chioce)

{

case1:

{

cout<

请输入森林的元素"

CSTreep1;

BTreep;

p1=f_1.returnT();

p=f_1.returnBT();

p1=f_1.creat(p1);

p=f_1.change(p1,p);

按照二叉树先序遍历的结果是:

f_1.fourth(p);

break;

}

case2:

CSTreep2;

p2=f_2.returnT();

p2=f_2.creat(p2);

森林的高度是:

f_2.higth(p2);

case3:

CSTreep3;

p3=f_3.returnT();

p3=f_3.creat(p3);

按照层次遍历的结果是:

f_3.third(p3);

case4:

{

CSTreep4;

p4=f_3.returnT();

p4=f_3.creat(p4);

按照森林先序遍历输出的结果是输出"

一个森林中每个结点的值及其对应的层次数:

f_3.first(p4,1);

case5:

CSTreep5;

p5=f_3.returnT();

p5=f_3.creat(p5);

输出一个森林的广义表形式:

f_3.second(p5);

case0:

cout<

EXIT"

break;

default:

输入错误,请重新输入"

}

return0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1