文档介绍:袁膇《数据结构》实验报告袈实验序号: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);螀LDR(root->rchild);膇}膃return(0);}芁LRD(Bitreeroot)袇{if(root!=NULL){蚅LRD(root->lchild);羂LRD(root-