欢迎来到天天文库
浏览记录
ID:11661634
大小:43.00 KB
页数:3页
时间:2018-07-13
《实验四 二叉树的操作》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验四二叉树的操作2007-11-12一、实验目的理解并熟悉掌握创建二叉树和实现二叉树的三种遍历二、实验内容创建二叉树和实现二叉树的三种遍历a.根据提示输入字符型数据创建二叉树,输入值为所有字符型数据b.输出为遍历后的每个结点的值的顺序c.创建二叉树并能实现二叉树的先序、中序、后序遍历d.如果输入数据为:abc输出结果为:abcbacbca程序流程:main()àclrscr()àcreatetree()àpreorder()àinorder()àpostorder三、源程序#include"stdlib.h"/*引入头文件*/structtnode/*定义二叉树存储
2、结构*/{chardata;structtnode*lchild;structtnode*rchild;};structtnodetree;/*定义二叉树指针*/voidcreatetree(structtnode*t)/*创建函数*/{structtnode*p=t;/*把二叉树指针给p*/charcheck;if(p->lchild==NULL
3、
4、p->rchild==NULL)/*判断左右子树是否为空*/{printf("pleaseenterthedata:");/*输入根结点数据*/scanf("%c",&(p->data));getchar();}if(p
5、->lchild==NULL){printf("%cleftchildisnull.Add?y/n",p->data);/*左子树空,询问是否创建*/scanf("%c",&check);getchar();if(check=='y'){structtnode*q=(structtnode*)malloc(sizeof(structtnode));/*开辟空间*/q->lchild=NULL;q->rchild=NULL;p->lchild=q;createtree(q);}}if(p->rchild==NULL){printf("%crightchildisNU
6、LL.Add?y/n",p->data);/*右子树空,询问是否创建*/scanf("%c",&check);getchar();if(check=='y'){structtnode*q=(structtnode*)malloc(sizeof(structtnode));/*开辟空间*/q->lchild=NULL;q->rchild=NULL;p->rchild=q;/*连到二叉树上*/createtree(q);}}}voidpreorder(structtnode*t)/*先序遍历函数*/voidinorder(structtnode*t)/*中序遍历函数*
7、/voidpostorder(structtnode*t)/*后序遍历函数*/voidmain(){clrscr();/*清屏函数*/tree.lchild=NULL;/*左子树*/tree.rchild=NULL;/*右子树*/createtree(&tree);/*创建二叉树*/preorder(&tree);/*先序遍历*/printf("");inorder(&tree);/*中序遍历*/printf("");postorder(&tree);/*后序遍历*/}一、使用说明程序运行:1、先输入根结点数据,例如:a2、输入y或n判断是否创建左子树。输入y
8、然后输入左子树数据3、输入y或n判断是否创建右子树。输入y然后输入右子树数据4、按回车可查看遍历结果并退出程序。二、测试结果运行程序,屏幕提示:pleaseenterthedata:a/*首先输入根结点,为a*/aleftchildisnull.add?y/n/*询问是否输入a结点的左结点*/y/*输入*/pleaseenterthedata:b/*输入结点a的左结点,为b*/bleftchildisnull.add?y/n/*询问是否输入b结点的左结点*/n/*不输入*/brightchildisnull.add?y/n/*询问是否输入b结点的右结点*/n/*不输入
9、*/arightchildisnull.add?y/n/*询问是否输入a结点的右结点*/y/*输入*/pleaseenterthedata:c/*输入结点a的右结点,为c*/cleftchildisnull.add?y/n/*询问是否输入c结点的左结点*/n/*不输入*/crightchildisnull.add?y/n/*询问是否输入c结点的右结点*/n/*不输入*/程序退出,显示结果应为:abc/*先序*/bac/*中序*/bca/*后序*/要求:1.写出下面三个过程或函数的代码。voidpreorder(structtnode*t)/*先序遍历
此文档下载收益归作者所有