《二叉树叶子结点数和高度》由会员分享,可在线阅读,更多相关《二叉树叶子结点数和高度(8页珍藏版)》请在金锄头文库上搜索。
1、江西理工大学软件学院计算机类课程实验报告课程名称: 数据结构 班 级: 姓 名: 学 号: 江西理工大学软件学院差距大,市场体系不完善,缺乏集聚效应等问题,同时充分考虑到该地周围已形成成熟建材商圈的商业价值,因地制宜的进行家居建材广场的建设。通过合理布局、优化环境、提升服务,该项目必将切实发挥商业区在引导消费、拉动经济增长方面的作用,促进该县经济和社会又好又快发展。7实 验 五 实验名称求二叉树叶子结点数和高度实验日期2012-12-11实验成绩实验目的、要求及内容一、 实验目的、要求:a) 加深理解二叉树的定义和特性;b) 掌握二叉树的存储结构与实现;c) 掌握二叉树的遍历操作及其应用二、实
2、验内容:1 写出程序的运行结果,并上机验证2 上机调试程序,根据键盘输入的扩展二叉树的前序遍历序列建立相应的二叉树,并计算该二叉树的叶子结点个数和高度。3 上机调试,程序分析4 编写程序5 填写实验报告实验环境3423机房操作系统:windows XPC环境: VC+ 6.0算法描述及实验步骤一、算法描述存储结构:二叉链表基本思想:利用二叉树的遍历操作,设计递归算法实现。递归模式:一整棵二叉树树的叶子结点数 左子树的叶子结点数 右子树的叶子结点数递归出口二、实验步骤1 写出程序的运行结果,并上机验证。程序及运行结果如下:(1)输入创建一棵二叉树的结点数据:ab#c#D# 输出:前序遍历 abc
3、D该二叉树的叶子结点为:2 该二叉树的高度为:3交换后的二叉树为:abDc(2) 输入创建一棵二叉树的结点数据:ABC#D#E# 输出:前序遍历 ABCDE该二叉树的叶子结点为:2 该二叉树的高度为:4交换后的二叉树为:AEBCD2 上机调试程序,按规定格式输入数据(1)输入创建一棵二叉树的结点数据:ab#c#D#运行结果,正确。(2) 输入创建一棵二叉树的结点数据:ABC#D#E# 运行结果,正确。(3) 若输入格式错误,则无法得到结果。3 上机调试,程序分析4 编写程序调试过程及实验结果实验执行的结果:(1) 输入创建一棵二叉树的结点数据:ab#c#D#(2) 输入创建一棵二叉树的结点数据
4、:ABC#D#E#总 结课程实验不仅要求对课本知识有较深刻的了解,同时要求我们有较强的思维和动手能力,需要进一步了解编程思想和编程技巧。通过课程实验,使我对课本知识掌握的更加深刻,增强了自己的思维和动手能力。通过这次试验加深理解二叉树的定义和特性;掌握二叉树的存储结构与实现;掌握二叉树的遍历操作及其应用附 录(源程序清单等)#includeint count=0;struct BiNodechar data;BiNode *lchild,*rchild;class BiTreepublic: BiTree(); BiTree(); void CountLeaf(BiNode *root); i
5、nt BiTreeDepth(BiNode *root); BiNode *getroot()return root; void Swap(BiNode *root); / int IsSame(BiNode *root1,BiNode *root2);private: BiNode *root; BiNode *Creat(); void Release(BiNode *root); ;BiTree:BiTree() root=Creat(); BiNode *BiTree:Creat() BiNode *root; char ch;cinch;if(ch=#) return NULL;el
6、se root=new BiNode;root-data=ch; root-lchild=Creat(); root-rchild=Creat();return root;BiTree:BiTree ()Release(root);void BiTree:Release (BiNode *root)if(root!=NULL)Release(root-lchild );Release(root-rchild );delete root;void BiTree:CountLeaf(BiNode *root)if(root!=NULL) if(root-lchild=NULL&root-rchil
7、d=NULL) count+; coutdatalchild); CountLeaf(root-rchild);int BiTree:BiTreeDepth(BiNode *root)if(root=NULL)return 0;elseint dep1=BiTreeDepth(root-lchild); int dep2=BiTreeDepth(root-rchild);if(dep1dep2)return dep1+1;else return dep2+1; void BiTree:Swap(BiNode *root)if(root!=NULL) BiNode *p; p=root-lchi
8、ld; root-lchild=root-rchild; root-rchild=p;coutdatalchild ); Swap(root-rchild );void main() cout 请依次输入创建一棵二叉树的结点数据: endl; BiTree B;cout-前序遍历-endl; B.CountLeaf(B.getroot();coutendl;cout该二叉树的叶子结点数为:;coutcountendl;cout该二叉树的高度为:; coutB.BiTreeDepth (B.getroot()endl; cout交换后的二叉树为:endl;B.Swap(B.getroot();coutendl;