[2018年最新整理]实验三 二叉树的基本运算.docxVIP

  • 7
  • 0
  • 约2.71千字
  • 约 6页
  • 2018-04-15 发布于浙江
  • 举报

[2018年最新整理]实验三 二叉树的基本运算.docx

[2018年最新整理]实验三 二叉树的基本运算

实验三二叉树的基本运算一、实验目的1、使学生熟练掌握二叉树的逻辑结构和存储结构。2、熟练掌握二叉树的各种遍历算法。二、实验内容题目一:二叉树的基本操作实现(必做题)[问题描述]建立一棵二叉树,试编程实现二叉树的如下基本操作:1. 按先序序列构造一棵二叉链表表示的二叉树T;2. 对这棵二叉树进行遍历:先序、中序、后序以及层次遍历,分别输出结点的遍历序列;3. 求二叉树的深度/结点数目/叶结点数目;(选做)4. 将二叉树每个结点的左右子树交换位置。(选做) [基本要求]从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立)[测试数据]如输入:ABCффDEфGффFффф(其中ф表示空格字符)  则输出结果为先序:ABCDEGF  中序:CBEGDFA  后序:CGEFDBA层序:ABCDEFG[选作内容]采用非递归算法实现二叉树遍历。三、实验步骤1.算法设计2.本程序包含模块1)主函数int main(){主菜单While()判断{Switch 功能选择}功能实现运行如图所示(2)先序遍历?coutT–data;?????preOrder(T–lchild);???????????preOrder(T–rchild);?(3)中序遍历?inOrder(T–lchild);????????????coutT–data;???????????inOrder(T–rchild);???(4)后序遍历?PostOrder(T–lchild);???????????PostOrder(T–rchild);???????????coutT–data;?四、实验结果按要求输入数据,按照步骤依次进行,查看最后结果五、程序源代码:#includeiostream#includestdio.h?#includestdlib.h?#include?malloc.h?#include?string.h#define?OK?1?#define?ERROR?0?#define?OVERFLOW?-1?#define??MAX_TREE_SIZE??100?typedef??TElem?Type??sqBiTree?[MAX_TREE_SIZE?];?typedef?struct??BiTNode{??TElemTypedata;?struct???BiTNode???*lchild,*rchild;?}biTNode,*BiTree;??int??CreateBtree(BiTree?T)? //先序建立二叉树{??char?c;?cinc;?if(c==‘#’)?T=NULL;????else{?????T=new?BiTNode?????if(!T)?exit(OVERFLOW);???????T-data=c;??create_tree(T-lchild);???????create_tree(T-rchild);?????}?return??ok;?int?preOrder(BiTree?T)??????????//先序遍历??{?if(T!=NULL)?{??coutT–data;?????preOrder(T–lchild);???????????preOrder(T–rchild);????????}?}?return?ok;?}?int?InOrder(BiTree?T)?????????//中序遍历??{?if(T!=NULL)?{??inOrder(T–lchild);????????????coutT–data;????????????inOrder(T–rchild);?????????}?return?ok;?}?int?PostOrder(BiTree?T)??????????//后序遍历??{?if(T!=NULL)?{??PostOrder(T–lchild);???????????PostOrder(T–rchild);???????????coutT–data;?????????}?return?ok;?}?int?LevOrder(BiTree?T)???????????//层次遍历二叉树?{??bitree?p;??if(T)??{??enqueue(T);??while(front!=rear)??{??p=delqueue();??printf(%3c,p-data);??if(p-lch!=NULL)enqueue(p-lch);??if(p-rch!=NULL)enqueue(p-rch);??}??????}?}??int?main()?//主函数,菜单{?printf(*********1.先序建立一个二叉树*********\n);??printf(*********2.先序

文档评论(0)

1亿VIP精品文档

相关文档