数据结构二叉树实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验三二叉树的遍历一、实验目的1、熟悉二叉树的结点类型和二叉树的基本操作。2、掌握二叉树的前序、中序和后序遍历的算法。3、加深对二叉树的理解,逐步培养解决实际问题的编程能力。二、实验环境运行C或VC++的微机。三、实验内容1、依次输入元素值,以链表方式建立二叉树,并输出结点的值。2、分别以前序、中序和后序遍历二叉树的方式输出结点内容。四、设计思路1.对于这道题,我的设计思路是先做好各个分部函数,然后在主函数中进行顺序排列,以此完成实验要求2.二叉树采用动态数组3.二叉树运用9个函数,主要有主函数、构建空二叉树函数、建立二叉树函数、访问节点函数、销毁二叉树函数、先序函数、中序函数、后序函数、范例函数,关键在于访问节点五、程序代码#includestdio.h#includestdlib.h#includemalloc.h#defineOK1#defineERROR0typedefstructTNode//结构体定义{intdata;//数据域structTNode*lchild,*rchild;//指针域包括左右孩子指针}TNode,*Tree;voidCreateT(Tree*T)//创建二叉树按,依次输入二叉树中结点的值{inta;scanf(%d,&a);if(a==00)//结点的值为空*T=NULL;else//结点的值不为空{*T=(Tree)malloc(sizeof(TNode));if(!T){printf(分配空间失败!!TAT);exit(ERROR);}(*T)-data=a;CreateT(&((*T)-lchild));//递归调用函数,构造左子树CreateT(&((*T)-rchild));//递归调用函数,构造右子树}}voidInitT(Tree*T)//构建空二叉树{T=NULL;}voidDestroyT(Tree*T)//销毁二叉树{if(*T)//二叉树非空{DestroyT(&((*T)-lchild));//递归调用函数,销毁左子树DestroyT(&((*T)-rchild));//递归调用函数,销毁右子树free(T);T=NULL;}}voidvisit(inte)//访问结点{printf(%d,e);}voidPreOrderT(Tree*T,void(*visit)(int))//先序遍历T{if(*T)//二叉树非空{visit((*T)-data);//先访问根结点PreOrderT(&((*T)-lchild),visit);//递归调用函数,先序遍历左子树PreOrderT(&((*T)-rchild),visit);//递归调用函数,先序遍历右子树}}voidInOrderT(Tree*T,void(*visit)(int)){if(*T){InOrderT(&((*T)-lchild),visit);//递归调用函数,中序遍历左子树visit((*T)-data);//访问根结点InOrderT(&((*T)-rchild),visit);//递归调用函数,中序遍历右子树}}voidPostOrderT(Tree*T,void(*visit)(int)){if(*T){PostOrderT(&((*T)-lchild),visit);//递归调用函数,后序遍历左子树PostOrderT(&((*T)-rchild),visit);//递归调用函数,序遍历右子树visit((*T)-data);//访问根结点}}voidexample(){inti;printf(如果你想建立如图所示的二叉树\n);printf(\n);printf(1\n);printf(/\\\n);printf(33\n);printf(/\\\\\n);printf(457\n);printf(\n);printf(请输入:13400005000030070000\n);printf(\n按先序次序输入二叉树中结点的值(输入00表示节点为空)\n);for(i=0;i71;i++)printf(*);printf(\n);}intmain(){TreeT;printf(**************欢迎使用!**************潘俊达\n);example();printf(\n请输入所要建立的二叉树:\n);CreateT(&T);InitT(&T);inti;printf(先序遍历二叉树:\n);PreOrderT(&T,visit);printf(\n);printf(\n中序遍历二叉树:\n);InOrderT(&T,visit);printf(\n);printf(\n后序遍历二叉树:\n);PostOrderT(&T,visit);printf(\n);system(PAUSE);return0;}六、程序截图1.范例函数显示,并输入先序二叉树节点值2.先序遍历二叉树3.中序遍历二叉树3.后序遍历二叉树

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功