- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计题目二叉树的集合操作.
数据结构课程设计
题目:二叉树的集合操作
学院:计算机与信息工程学院
年级:2
班级:3
姓名:陈礼
时间:2004-6-17
一、需求分析:
编写一段程序,对二叉树进行复合操作,包括创建一棵二叉树,显示二叉树的树型结构,对创建的二叉树进行先根、中根、后根三种方式进行遍历,并且打印出叶子结点,并且可以随时删除我们创建的二叉树,然后用循环语句将上述的操作封装起来,使之能够进行可重复、连续的操作。输入为a-z或者是A-Z之间的字符,用‘@’字符作为结束当前结点的标识符。
二、概要设计:
本程序要用到的数据类型
struct BinTreeNode
{ DataType info;
PBinTreeNode llink;
PBinTreeNode rlink;
};
然后定义我们需要的指针类型
typedef struct BinTreeNode *PBinTreeNode; /* 定义指向二叉树结点的指针类型*/
typedef PBinTreeNode *PBinTree; /*定义指向树型结点的指针类型*/
程序需要用到的自定义函数
1.创建一个二叉树根节点
PBinTree Create_BinTreeRoot(void)
2.创建一个二叉树的节点
PBinTreeNode Create_BinTreeNode(void)
3.创建一棵二叉树
PBinTreeNode Create_BinTree(void)
4.用先根的方法遍历一棵二叉树
void preOrder(PBinTreeNode pbnode)
5.用中根的方法遍历一棵二叉树
void inOrder(PBinTreeNode pbnode)
6.用后根的方法遍历一棵二叉树
void postOrder(PBinTreeNode pbnode)
7.打印出我们创建的二叉树的树型结构
void outputTree(PBinTreeNode pbnode,int totalSpace)
8.打印出二叉树的叶子结点
void leaves(PBinTreeNode pbnode)
9.释放我们所申请的所有结点空间
void freeAllNodes(PBinTreeNode pbnode)
10.判断我们输入的是否是合格的字符
int isalphabet(char i)
三、详细设计:
1. PBinTreeNode Create_BinTreeNode(void)
我们定义一个指向二叉树结点类型的指针PBinTreeNode,然后,申请一个二叉树结点大小的空间,对左右子结点赋为空。
2.创建一个二叉树根节点
定义一个指向二叉树结点的指针的指针即:BinTreeNode ** pbtree, 或者是:PBinTreeNode *pbtree;用于存放树的根结点,同时,将我们创建的二叉树的地址传给它即:*pbtree=Create_BinTree();
3. 创建一棵二叉树
首先我们定义一个DataType类型的变量i,用于存放我们输入的字符(即作为缓冲区),并用scanf函数去接收它,由于使用scanf函数时,会出现吸收我们输入的回车字符,并将会车作为接收的字符的情况发生,为了避免这种情况,我们用函数fflush(stdin)将缓冲区的字符全部冲掉,然后再吸收我们输入的字符,就可以完全避免此类问题的发生。我们定义我们输入的字符是从a-z或者是A-Z,用字符@为我们结束当前结点左或者右结点的字符,然后递归调用左右子树,此时我们将一棵二叉树全整的创建出来了。
4.用先根的方法遍历一棵二叉树
先访问根结点,打印出它里面的信息,然后递归调用左子树和右子树。
5.用中根的方法遍历一棵二叉树
先递归调用左子树,打印出里面的信息,在打印出根结点信息,然后递归调用右子树,打印出里面的信息。
6.用后根的方法遍历一棵二叉树
先递归调用左子树,打印出里面的内容,然后递归调用右子树,打印出里面的内容,然后是根结点的内容。
7. 打印出我们创建的二叉树的树型结构
先递归调用右子树,如果结点不为空的话,空格数加5,如果为空的话,就打印出右子树的内容,然后递归调用左子树。
8.打印出二叉树的叶子结点
如果当前结点的左右子树都为空的话,就打印出此结点的信息,如果左子树不为空的话,递归调用左子树,如果右子树不为空的话,递归调用右子树。
9.释放我们所申请的所有结点空间
如果当前的左子树不为空,则遍历左子树,如果右子树不为空的话,则遍历右子树,如果都不位空的话,分别调用左右子树,如果左右都为空的话,就释放左右结点空间,并将当前结点置为空。
10.主函数的安排:
先创
文档评论(0)