数据结构实验树和叉树的操作Word格式文档下载.docx

上传人:b****1 文档编号:14764792 上传时间:2022-10-24 格式:DOCX 页数:14 大小:293.68KB
下载 相关 举报
数据结构实验树和叉树的操作Word格式文档下载.docx_第1页
第1页 / 共14页
数据结构实验树和叉树的操作Word格式文档下载.docx_第2页
第2页 / 共14页
数据结构实验树和叉树的操作Word格式文档下载.docx_第3页
第3页 / 共14页
数据结构实验树和叉树的操作Word格式文档下载.docx_第4页
第4页 / 共14页
数据结构实验树和叉树的操作Word格式文档下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

数据结构实验树和叉树的操作Word格式文档下载.docx

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

数据结构实验树和叉树的操作Word格式文档下载.docx

windows操作系统;

MicrosoftVisualStudio6.0集成开发环境。

三、实验内容与步骤

1.根据P129的方法,将a*b-((c+d*e/f)+g)转化为表达式二叉树(绘图),并写出表达式二叉树的前序、中序和后序遍历顺

先序:

-*ab++c*d/efg

中序:

a*b-c+d*e/f+g

后序:

ab*cdef/*+g+-

2.链式表表示和实现二叉排序树如下:

#include<

stdlib.h>

stdio.h>

typedefintTElemType;

typedefstructBiTNode

{

TElemTypedata;

structBiTNode*lchild,*rchild;

}BiNode,*Bitree;

Bitreeroot;

//定义根结点

voidinsert_data(intx)/*生成/树*/

{

Bitreep,q,s;

s=(Bitree)malloc(sizeof(BiNode));

//创建结点

s->

data=x;

//结点赋值

lchild=NULL;

rchild=NULL;

if(!

root)

{

root=s;

}

else

p=root;

while(p)/*如何接入二叉排序树的适当位置*/

{

q=p;

if(p->

data==x)//相同结点不能重复插入

{

printf("

dataalreadyexist!

\n"

);

return;

}

elseif(x<

p->

data)

p=p->

lchild;

else

rchild;

}

if(x<

q->

q->

lchild=s;

else

rchild=s;

}

voidmain()/*先生成二叉排序树*/

inti=1,x;

//i记录结点个数,x存放结点值

root=NULL;

/*千万别忘了赋初值给root!

*/

printf("

请输入数据,-9999表示输入结束\n"

do

printf("

pleaseinputdata%d:

"

i);

i++;

scanf("

%d"

&

x);

/*从键盘采集数据,以-9999表示输入结束*/

if(x==-9999){

printf("

\nNowoutputdatavalue:

\n"

insert_data(x);

/*调用插入数据元素的函0,0,数*/

}while(x!

=-9999);

改写以上程序,实现功能如下(任选三题):

1.编写函数实现前序、中序和后序遍历。

2.编写函数实现计算叶节点个数。

3.编写函数实现层序遍历。

4.编写函数实现查询二叉树中的某个结点(分查到和查不到两种情况)。

5.编写函数实现求二叉树的深度

6.编写函数实现中序非递归遍历(利用栈)

四、实验结果与数据处理

详细记录程序在调试过程中出现的问题及解决方法。

记录程序执行的结果(贴图)。

五、分析与讨论

对上机实践结果进行分析,上机的心得体会。

六、教师评语

签名:

日期:

成绩

附源程序清单:

1.#include<

DLR(Bitreeroot)

{if(root!

=NULL){//非空二叉树

root->

data);

//访问D

DLR(root->

lchild);

//递归遍历左子树

rchild);

//递归遍历右子树

}

return(0);

LDR(Bitreeroot)

{if(root!

=NULL)

LDR(root->

LRD(Bitreeroot)

=NULL){

LRD(root->

/*调用插入数据元素的函数*/

\nDLR"

DLR(root);

\nLDR"

LDR(root);

\nLRD"

LRD(root);

2.#include<

intCountLeaf(Bitreeroot)

{//返回指针T所指二叉树中所有叶子结点个数

intm,n;

if(!

root)return0;

root->

lchild&

&

!

rchild)return1;

else{

m=CountLeaf(root->

n=CountLeaf(root->

return(m+n);

}//else

}//CountLeaf

intsum;

\n叶节点个数="

sum=CountLeaf(root);

%d\n"

sum);

5.#include<

intDepth(Bitreeroot){//返回二叉树的深度

intdepthval,depthLeft,depthRight;

if(root==NULL)depth

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

当前位置:首页 > 自然科学 > 天文地理

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

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