资源描述:
《visual_c++_6.0调试功能_图解教程(3)--实例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VisualC++6.0调试功能图解教程(3)--实例二树和二叉树1.实验目的1.熟悉二叉树的二叉链表存储结构;2.掌握构造二叉树的方法;3.加深对二叉树的遍历的理解。二.需求分析 本程序演示用C++编写,完成按先序遍历生成二叉树,先序遍历打印输出二叉树,后序遍历打印输出二叉树,中序遍历打印输出二叉树,层序遍历打印输出二叉树,先序遍历方法交换左右子树,求树的高度,求树的叶子结点个数.输入值的范围:建立一棵二叉时,要求结点的的左右孩子为空时输入0代替.所有输入值必须为整形.输入的结点个数:若为单边二叉树(全只有左结点或全只有右结点)则为任意个数;若非单边二叉则要求结点最多的层个
2、数不得超过MAXSIZE的值.输出形式:输出时如果结点的左右指针这空则以"#"代替输出.程序所能完成的功能:程序能完成按先序遍历生成二叉树,先序遍历打印输出二叉树,后序遍历打印输出二叉树,中序遍历打印输出二叉树,层序遍历打印输出二叉树,先序遍历方法交换左右子树,求树的高度,求树的叶子结点个数.操作.测试数据A建立二叉树中输入1230000生成一棵树123####B交换左右子树得到一棵二叉树1#2#3##C按层序遍历树得到一棵二叉树1#2#3##D求二叉树的高度得到高度3E求叶子结点个数得到个数1三.设计概要(1)为了实现上述程序的功能,需要定义二叉树的抽象数据类型:ADTBiTre
3、eis{数据对象:D={ai
4、ai∈IntegerSet,i=0,1,2,…,n,n≥0}数据关系:R={
5、ai,ai+1∈D}基本操作:creat()操作结果:建立一棵二叉树preorder()初始条件:二叉树已经存在操作结果:先序遍历显示二叉树preordertswap()初始条件:二叉树已经存在操作结果:交换二叉树的左右子树theight()初始条件:二叉树已经存在操作结果:输出二叉树的高度tleaves()初始条件:操作结果:输出二叉树的叶子结点个数levelorder()初始条件:二叉树已经存在操作结果:层序遍历显示二叉树}ADTBiTree(2)本程序
6、包含两个类和一个结构体类型A基类:队列类SeQueue有5个函数 1.构造函数 SeQueue() 2.析构函数 ~SeQueue() 3.进队函数 AddQ(NodeTypex) 4.出队函数 DelQ() 5.判断非空函数 IsEmpty()B派生类:二叉树类BiTree有20个函数
7、 1主函数 main()2.构造函数 BiTree() 3.析构函数 ~BiTree() 4.建立树函数 creat0() 5.先序遍历函数 voidpreorder() 6.中序遍历函数 inorder() 7.后序遍历函数
8、 postorder() 8.层序遍历函数 levelorder() 9.交换左右子树函数 preordertswap() 10.求二叉树高度函数 theight() 11.求二叉树叶子结点个数函数 tleaves() 12.建立二叉树递归算法函数 *creat() 13.先序遍历递归算法函数
9、preorder(NodeType*p) 14.中序遍历递归算法函数 inorder(NodeType*p) 15.后序遍历递归算法函数 postorder(NodeType*p) 16.按层遍历算法函数 levelorder(NodeType*p) 17.先序遍历方法交换左右子树函数 preorderswap(NodeTyp