实验四 二叉树的操作

实验四 二叉树的操作

ID:11661634

大小:43.00 KB

页数:3页

时间:2018-07-13

实验四 二叉树的操作_第1页
实验四 二叉树的操作_第2页
实验四 二叉树的操作_第3页
资源描述:

《实验四 二叉树的操作》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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)/*先序遍历

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。