- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE
PAGE 2
纲要
一 程序设计要求与目的
二 存储结构设计
三 算法设计(流程图)
四 详细设计(源代码)
五 调试与分析
六 实验总结
七 参考文献
第一章 程序设计要求与目的
题目:树与二叉树的转换的实现。以及树的前序、后序的递归、非递归遍历算法,层次序的非递归遍历算法的实现,应包含建树的实现。
第二章 存储结构设计
引入头文件:
#include stdio.h
#include malloc.h
#include stdlib.h
设置常量:
#define MAX_TREE_SIZE 100
一般树的存储结构有以下几种:双亲结点,孩子结点,孩子兄弟结点。本实验运用到的是双亲结点和孩子兄弟结点。具体存储结构如下:
/*树的双亲表示结点结构定义*/
typedef struct
{
int data;
int parent; //双亲位置域
}PTNode;
/*双亲表示法树结构*/
typedef struct
{
PTNode node[MAX_TREE_SIZE];
int count; //根的位置和节点个数
}PTree;
/*树的孩子兄弟表示结点结构定义*/
typedef struct node{
int data;
struct node *firstchild;
struct node *rightsib;
}BTNode,*BTree;
第三章 算法设计(流程图)
流程图:
退出程序
退出程序
层次遍历
开始
双亲法
建树
按照格式输入各个结点
输出树的结点情况
1
主菜单
前序遍历
(递归)
后序遍历
(递归)
前序遍历
(非递归)
后序遍历
(非递归)
输出遍历结果
副菜单
退出程序
2
3
5
4
0
0
6
9
第四章 详细设计(源代码)
详细设计共有以下函数的实现:
树的初始化函数(双亲法和孩子结点法两种),建树函数,输出树函数,树的前序遍历函数(递归和非递归两种),树的后序遍历函数(递归和非递归两种),树的层次遍历函数,一般树和二叉树的转换函数。
主菜单和副菜单。
主函数。
具体代码如下:
//初始化树(双亲表示法)
void init_ptree(PTree *tree)
{
tree-count=-1;
}
//初始化树结点(孩子兄弟表示法)
BTNode GetTreeNode(int x)
{
BTNode t;
t.data=x;
t.firstchild=t.rightsib=NULL;
return t;
}
//树的前序遍历(递归)
void preorder(BTNode *T)
{
if(T!=NULL)
{
printf(%d ,T-data);
preorder(T-firstchild);
preorder(T-rightsib);
}
}
//树的前序遍历(非递归)
void preorder2(PTree T)
{
int i;
for(i=0;iT.count;i++)
{
printf(%d ,T.node[i]);
}
}
//树后序遍历(递归)
void inoeder(BTNode *T)
{
if(T!=NULL)
{
inoeder(T-firstchild);
printf(%d ,T-data);
inoeder(T-rightsib);
}
}
//树后序遍历(非递归)
void inoeder2(PTree T)
{
int i;
for(i=T.count-1;i=0;i--)
{
printf(%d ,T.node[i]);
}
}
//层次遍历
void level(PTree T)
{
int i;
for(i=0;iT.count;i++)
{
printf(%d ,T.node[i]);
}
}
//水平输出二叉树
void PrintBTree(BTNode *root,int level)
{
int i;
if(root!=NULL)
{
PrintBTree(root-rightsib,level+1);
for(i=1;i=8*level;i++)
printf( );
printf(%d\n,root-data);
PrintBTree(root-firstchild,level+1);
}
}
//输出树
void print_ptree(PTree tree)
{
i
您可能关注的文档
- 03数据处理与试验设计201106.ppt
- 大数据方面学习.ppt
- 企业信息门户网站建设方案.doc
- 办公软件基础知识培训课件officeexcel.pptx
- 基于单片机的数据采集与传输系统设计毕业设计论文.doc
- 数据中心机房建设交流ppt.pptx
- 基于DCT的图像压缩编码算法的研究.doc
- 数据库基础学习方法.ppt
- oracle数据库基础培训PPT.ppt
- 关于云计算的认识学习报告.doc
- 2.1神经调节的结构基础 课件 人教版高中生物学选择性必修1.pptx
- 2.2.1算术平方根 课件 北师大版数学八年级上册.pptx
- 2.3.1细胞通过分裂而增殖 课件(内嵌视频3个)初中生物学北师大版(2024)七年级上册.pptx
- 2.3.2细胞分化形成组织 课件 初中生物学北师大版(2024)七年级上册.pptx
- 4.3.1 角与角的大小比较 课件 2025-2026学年湘教版数学七年级上册.pptx
- 2.3.3生物体的器官、系统 课件 初中生物学北师大版(2024)七年级上册.pptx
- 聚异氰酸酯行业商业计划书.docx
- 2.4节神经系统的分级调节 课件 人教版高中生物学选择性必修1.pptx
- 【公开课】探索勾股定理第1课时(课件)数学北师大版2024八年级上册.pptx
- 综合实践 一天的时间(课件)2025-2026学年度苏教版数学三年级上册.pptx
文档评论(0)