数据结构实验3.doc
《数据结构实验3.doc》由会员分享,可在线阅读,更多相关《数据结构实验3.doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流数据结构实验3.精品文档.实验三、二叉树的基本运算一、实验目的1、使学生熟练掌握二叉树的逻辑结构和存储结构。2、熟练掌握二叉树的各种遍历算法。二、实验内容题目一:二叉树的基本操作实现 (必做题)问题描述建立一棵二叉树,试编程实现二叉树的如下基本操作:1. 按先序序列构造一棵二叉链表表示的二叉树T;2. 对这棵二叉树进行遍历:先序、中序、后序以及层次遍历,分别输出结点的遍历序列;3. 求二叉树的深度/结点数目/叶结点数目;(选做)4. 将二叉树每个结点的左右子树交换位置。(选做) 基本要求从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉
2、树(以先序来建立),测试数据如输入:ABCDEGF(其中表示空格字符)则输出结果为 先序:ABCDEGF中序:CBEGDFA后序:CGEFDBA层序:ABCDEFG选作内容采用非递归算法实现二叉树遍历。三、 算法思想按前序构造一棵二叉树,先给二叉树分配空间,再用前序递归算法为该树输入结点。本次实验主要用到了多个递归遍历,把二叉树的不同顺序展现给大家。主要递归方式,用图代表如下:1、前序递归遍历:1. 2.5. 3. 4. 6. 7.当该二叉树为非空时,按上图的顺序输出各个结点。具体步骤为:1、 写一个函数,先输出根结点数据。2、 再判断左子树是否为空,如果左子树不为空,调用自身函数,把左子树的
3、根结点附给原根结点。3、 再判断右子树是否为空,如果右子树不为空,调用自身函数,把右子树的根结点附给原根结点。4、 遍历直到再没有结点作为原根结点,结束递归。2、 中序递归遍历: 4.2.6.1.3. 5.7.当该二叉树为非空时,按上图的顺序输出各个结点。具体步骤为:1、 先判断左子树是否为空,如果左子树不为空,调用自身函数,把左子树的根结点附给原根结点。2、 写一个函数,输出根结点数据。3、再判断右子树是否为空,如果右子树不为空,调用自身函数,把右子树的根结点附给原根结点。4、遍历直到再没有结点作为原根结点,结束递归。3、后续递归遍历:7. 3.6. 1. 2. 4.5.当该二叉树为非空时,
4、按上图的顺序输出各个结点。具体步骤为:1、先判断左子树是否为空,如果左子树不为空,调用自身函数,把左子树的根结点附给原根结点。2、再判断右子树是否为空,如果右子树不为空,调用自身函数,把右子树的根结点附给原根结点。3、 写一个函数,输出根结点数据。4、 遍历直到再没有结点作为原根结点,结束递归。4、 层序遍历:1. 先把根结点的数据赋值给数组的第一个元素2. 当左右结点不为空时,把左右结点分别赋值给数组的下个,再下个元素3. 当左子树不为空时,j加1,当右子树不为空时,j加1,每循环一次i加14. 每循环一次,把下标为i的数组赋值给根结点5. 直到i和j的值相等为止四、本函数包含九个模块1、
5、创建一棵树主要代码:cinch;if(ch = #)T = NULL;elseif(!(T = (BiTree)malloc(sizeof(BiNode)exit(OVERFLOW);T-ch = ch;T-Lsubtree = CreateTree();T-Rsubtree = CreateTree();return T;2、 递归前序遍历主要代码:if(T)coutch;PreOrder(T-Lsubtree);PreOrder(T-Rsubtree);3、 递归中序遍历主要代码:if(T)InOrder(T-Lsubtree);coutch;InOrder(T-Rsubtree);4、
6、递归后序遍历主要代码:if(T)PostOrder(T-Lsubtree);PostOrder(T-Rsubtree);coutch;5、 层序遍历主要代码:while (i != j)p = qi;cout ch;if (p-Lsubtree!= NULL)qj = p-Lsubtree;j+;if (p-Rsubtree!= NULL)qj = p-Rsubtree;j+;i+;6、 计算总结点数主要代码:if(T)node+;nodecount(T-Lsubtree);nodecount(T-Rsubtree);7、 计算叶子数主要代码:if(T)if(T-Lsubtree = NULL
7、 & T-Rsubtree = NULL)count+;leafcount(T-Lsubtree);leafcount(T-Rsubtree);8、 计算深度主要代码:if(T)int depthleft = depthcount(T-Lsubtree);int depthright = depthcount(T-Rsubtree);Bdepth = 1+(depthleftdepthright?depthleft:depthright);elseBdepth = 0;9、 主函数主要代码:cout+ 输入格式为:endlendl;cout+ 例: aendl;cout / endl;cout
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验
限制150内