《2023年数据结构二叉树实验报告.docx》由会员分享,可在线阅读,更多相关《2023年数据结构二叉树实验报告.docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验三二叉树的遍历一、实验目的1、熟悉二叉树的结点类型和二叉树的基本操作。2、掌握二叉树的前序、中序和后序遍历的算法。3、加深对二叉树的理解,逐步培养解决实际问题的编程能力。二、实验环境运营C或VC+的微机。三、实验内容1、依次输入元素值,以链表方式建立二叉树,并输出结点的值。2、分别以前序、中序和后序遍历二叉树的方式输出结点内容。四、设计思绪.对于这道题,我的设计思绪是先做好各个分部函数,然后在主函数 中进行顺序排列,以此完毕实验规定1 .二叉树采用动态数组.二叉树运用9个函数,重要有主函数、构建空二叉树函数、建立二 叉树函数、访问节点函数、销毁二叉树函数、先序函数、中序函数、 后序函数、范
2、例函数,关键在于访问节点五、程序代码i n c 1u de n c lud e i n c 1 ud e # define OK 1 #def i n e E RROR 0typede f struct TNode / /结构体定义。in t data; 数据域s t ruct TNode *1 c hil d , *rc h ild; /指针域涉及左右孩子指针TNode, *Tree;voi d CreateT (Tree*T) 创建二又树按,依次输入二又树中结点的值 (int a;sea n f (%d , &a);if(a =00) / /结点的值为空*T=NULL ;e Ise /结点
3、的值不为空(*T=(Tree) malloc(siz e o f (TN ode);。 i f(! T)(。printf(分派空间失败! TAD ;exit ( E RROR);)o (*T)-da t a= a ;。 Create T(&(*T)-lc hild) ; /递归调用函数,构造左子树CreateT(&(*T) -rch i Id); /递归调用函数,构造右子树void Ini t T(Tree *T)/构建空二叉树T=NULL;)void DestroyT(Tree *T) 销毁二叉树(i f (*T) /二又树非空(o Destro y T (&(*T) -lchild) );
4、 /递归调用函数,销毁左子树 DestroyT (&( (*T) -rchild ) );/递归调用函数,销毁右子树f r e e (T);o T=NULL:)void visit (int e) / / 访问结点( p r intf (线d , e);)void Pr e O rd e rT (Tree *T, v o id(*visit) (int)先序遍历 T(if(*T) /二叉树非空(。visi t (*T) -da t a) ; / 先访问根结点P r e 0 r derT (&( ( *T)-1 c h ild), vi $ it) ; / 递归调用函数,先序遍历左子树P r e
5、 Or d erT(& (*T)- r c h ild), v i s i t ); / / 递归调用函数,先序遍历右 子树)void InO r d e r T (Tree *T, voi d (* v isi t ) ( i n t ) if(*T)I nOrderT (&(*T) -Ichii d ), visit); 递归调用函数,中序遍历左子 树 。visi t ( (*T) data); 访问根结点InO r derT(&(*T )- r child), visit); / /递归调用函数,中序遍历右子树 )vo i d Post O r d e r T(T r ee *T, vo
6、id (* v isit) (int) (if (*T)(。 P o s tOrderT(&( (*T)- Ichi i d ), v is i t) ; / 递归调用函数,后序遍 历左子树PostOrd e rT(&(*T)- r c hild), v isi t ); / / 递归调用函数,序遍历右子树 visi t (*T)-data); / 访问根结点void exampl e ()pr i nt f (假如你想建立如图所示的二叉树n);print f ( n);printf1 n”);Printf(/n”);printf (,z33 n *);printf( / n * );pri
7、n tfC457n ”);P r i ntf(n);P r i n t f(H 请输入:1 3 4 00 00 5 00 00 3 00 7 00 00n);pr i ntf ( n按先序顺序输入二叉树中结点的值(输入0 0表达节点为空) n);f or(i=0; i 7 1 ;i+)p r i n t f ( * );pri n tf(*n*);) int main ()pr i n t f (z/ * * * * * *欢迎使用! * * * * * * *潘俊达n );ex a mpleO ;printf (n请输入所要建立的二叉树: n );Creat e T (&T);InitT (
8、&T);i n t i;pri n tf (先序遍历二叉树: n);P r eOrderT(&T, vis i t);printf, n );p r i ntf (n中序遍历二叉树:n);I nOrderT (&T, visit);printfCn );-print f (n后序遍历二义树: n );Post Ord e rT (&T, vi s it);opr in t f ( n );sy s tem(P AUSE”);areturn 0;六、程序截图1 .范例函数显示,并输入先序二叉树节点值C:UsersAdministratorDesktopJatC:UsersAdministrato
9、rDesktopJat=二叉现 exe二叉树二叉树如果你想建立如 一一一 y1/ 33输入:1 3 4 00 00 5 00 00 3 00 7 00 00今取诋然和济%,热薰曾尊上熊谏然输入所要建立的二叉树: 0 40 21 00 00 19 00 00 60 32 00 00 28 17 10 00 00 7 00 00 11 6 00 00 5 00 00.先序遍历二叉树|酰声通厉三叉树;酬0 40 21 19 60 32 28 17 10 7 11 6 52 .中序遍历二叉树|中序遍历二叉树:hl 40 19 100 32 60 10 17 7 28 6 11 5.后序遍历二叉树,序遍历二叉树:K21 19 40 32 10 7 17 6 5 11 28 60 100