- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
精品word学习资料可编辑
名师归纳总结——欢迎下载
中原工学院软件学院
试验报告
数据结构试验项目名称 二叉树的基本操作实现及其应用
数据结构
课程名称
同学姓名同学学号所在班级学科专业任课老师完成日期
精品word学习资料可编辑
名师归纳总结——欢迎下载
一,试验目的
熟识二叉树结点的结构和对二叉树的基本操作;
把握对二叉树每一种操作的详细实现;
学会利用递归方法编写对二叉树这种递归数据结构进行处理的算法;
会用二叉树解决简洁的实际问题;
二,试验内容
题目一 设计程序实现二叉树结点的类型定义和对二叉树的基本操作;该程序包括二叉树结构类型以及每一种操作的详细的函数定义和主函数;
按先序次序建立一个二叉树 ,
按( A: 先序 B: 中序 C: 后序 ) 遍历输出二叉树的全部结点以上比做,以下选做
求二叉树中全部结点数
求二叉树的深度
三,试验步骤
㈠,数据结构与核心算法的设计描述
typedef struct node
{
char data;
struct node *lchild,*rchild;
}BinTNode, *BinTree; // 定义二叉树的指针 BinTree CreatBinTree(void)// 先序遍历算法创建二叉树void Preorder(BinTree T) 先序遍历
void Inorder(BinTree T) 中序遍历void Postorder(BinTree T) 后序遍历int TreeDepth(BinTree T) 求深度
㈡,函数调用及主函数设计
㈢ 程序调试及运行结果分析
精品word学习资料可编辑
名师归纳总结——欢迎下载
如结果所示, 该程序实现了先序创建二叉树, 先序遍历, 中序遍历,后序遍历及求深度,求节点数等功能;
(四)试验总结
该试验主要是对二叉树的基本操作进行了训练;在试验的过程 中,我熟识了二叉树的构造方法, 以及二叉树的一些操作, 通过此次试验,我对二叉树的基本构造方法以及怎么使用递归的方法有了更深 的懂得;
四,主要算法流程图及程序清单
1 ,主要算法流程图
精品word学习资料可编辑
名师归纳总结——欢迎下载
2,程序清单#includestdio.h #includestring.h #includestdlib.h typedef struct node
{
char data;
struct node *lchild,*rchild;
}BinTNode, *BinTree; // 定义二叉树的指针
BinTree CreatBinTree(void)// 先序遍历算法创建二叉树
{
BinTree T; char ch;
if((ch=getchar())== ) return(NULL);
else{
T=(BinTNode *)malloc(sizeof(BinTNode));
精品word学习资料可编辑
名师归纳总结——欢迎下载
T-data=ch;
T-lchild=CreatBinTree();
//
构造左子树
T-rchild=CreatBinTree();
return(T);
//
构造右子树
}
}
// 先序遍历
void Preorder(BinTree T)
{
if(T){
printf(%c,T-data); Preorder(T-lchild); Preorder(T-rchild);
}
}
// 中序遍历
void Inorder(BinTree T)
{
if(T){
Inorder(T-lchild); printf(%c,T-data); Inorder(T-rchild);
}
}
// 后序遍历
void Postorder(BinTree T){ if(T){
Postorder(T-lchild); Postorder(T-rchild); printf(%c,T-data);
}
}
int TreeDepth(BinTree T)
{
int hl,hr,max;
if(T){
hl=TreeDepth(T-lchild);
精品word学习资料可编辑
名师归纳总结——欢迎下载
hr=TreeDepth(T-rchild); max=hlhr. hl:hr; NodeNum=NodeNum+1;
return(max+1);
}
else return(0);
}
Int TreeNode(BinTree T)
{
int NodeNum=0; if(T){
TreeDepth(T-lchild); TreeDepth(T-rchild); NodeNum=NodeNum+1;
return(NodeNum);
}
else return 0;
}
// 主函数
void
文档评论(0)