文档介绍:Forpersonaluseonlyinstudyandresearch;mercialuse螅Forpersonaluseonlyinstudyandresearch;mercialuse袁螀薆《数据结构》实验报告袂实验序号:6 实验项目名称:树和二叉树的操作蚃学号蕿蚆姓名芃肀专业、班莇螆实验地点蚃螂指导教师莀袆实验时间肄芀一、实验目的及要求腿1、进一步掌握指针变量、动态变量的含义。羆2、掌握二叉树的结构特征,以及各种存储结构的特点及适用范围。蒅3、掌握用指针类型描述、访问和处理二叉树的运算。羂4、掌握用二叉树前序、中序、后序、层次遍历的方法。羈二、实验设备(环境)及要求肅微型计算机;蚂windows操作系统;。蚇三、实验内容与步骤肅肃根据P129的方法,将a*b-((c+d*e/f)+g)转化为表达式二叉树(绘图),并写出表达式二叉树的前序、中序和后序遍历顺膂螀膅先序:-*ab++c*d/efg蒄中序:a*b-c+d*e/f+g薀后序:ab*cdef/*+g+-:袅#include<>节#include<>芈莅typedefintTElemType;芆蝿typedefstructBiTNode芁{蒅 TElemTypedata;莂 structBiTNode*lchild,*rchild;蒁}BiNode,*Bitree;聿薅Bitreeroot;//定义根结点螃膃voidinsert_data(intx)/*生成/树*/袈{蚅 Bitreep,q,s;膄 s=(Bitree)malloc(sizeof(BiNode));//创建结点蚁 s->data=x;//结点赋值薇 s->lchild=NULL;蚄 s->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羀 p=p->rchild;莈}莅 if(x<q->data)膀 q->lchild=s;螈 else蒈 q->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");袇}袂 else膂 insert_data(x);/*调用插入数据元素的函0,0,数*/袇 }while(x!=-9999);袇}芃改写以上程序,实现功能如下(任选三题):、中序和后序遍历。。。(分查到和查不到两种情况)。(利用栈)薁蒀四、实验结果与数据处理芇详细记录程序在调试过程中出现的问题及解决方法。记录程序执行的结果(贴图)。薂五、分析与讨论芃对上机实践结果进行分析,上机的心得体会。艿六、教师评语莆羈成绩羃签名:螁日期:蒆附源程序清单:莄1.#include<>蒃#include<>螇蒆typedefintTElemType;螅袁typedefstructBiTNode螀{薆 TElemTypedata;袂 structBiTNode*lchild,*rchild;蚃}BiNode,*Bitree;蕿DLR(Bitreeroot)蚆{if(root!=NULL){//非空二叉树芃printf("%d",root->data);//访问D肀DLR(root->lchild);//递归遍历左子树莇DLR(root->rchild);//递归遍历右子树螆}蚃return(0);螂}莀LDR(Bitreeroot)袆{if(root!=NULL)肄{芀LDR(root->lchild);腿printf("%d",root->data)