二叉树编写计算

上传人:夏** 文档编号:431342082 上传时间:2023-07-12 格式:DOCX 页数:18 大小:56.24KB
返回 下载 相关 举报
二叉树编写计算_第1页
第1页 / 共18页
二叉树编写计算_第2页
第2页 / 共18页
二叉树编写计算_第3页
第3页 / 共18页
二叉树编写计算_第4页
第4页 / 共18页
二叉树编写计算_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《二叉树编写计算》由会员分享,可在线阅读,更多相关《二叉树编写计算(18页珍藏版)》请在金锄头文库上搜索。

1、数据结构的课程设计 报告题目:二叉树的应用设计与实现班级:1612401学号:161240113姓名:张修鸣指导老师:孙涵完成日期:2014.1.3目 录一需求分析二.程序主要功能.三程序运行平台.四. 程序类说明五. 模*分析.六. 存在的不足对策.七体验感悟八.程序代码.需求分析编程实现二叉树的建立,先序、中序、后序、层序遍历(递归和非递归方法)二叉树 的高度、繁茂度,交换左右子树,统计叶子节点的数目,判断是否为完全二叉树,按树的形 态在屏幕上打印输出。序主要功能该程序的主要功能有:(1)从文件中读入建树信息,树的节点数目不小于20个,树的高度不小于4。(2)建树信息采用两行英文字符表示,

2、每个英文字符代表一个结点,第1行为树的 中序遍历结果,第2行为树的后序遍历结果。(3)先序、中序、后序、层序遍历(递归和非递归方法),二叉树的高度、繁茂度, 交换左右子树,统计叶子节点的数目,判断是否为完全二叉树,按树的形态在屏幕上打印输 出。序运行平台该程序是用VC+6.0制做的,使用Microsoft Visual C+ 6.0运行该程序,具体操作是: 打开Microsoft Visual C+ 6.0,菜单栏里点文件f打开工作区f找到“图书管理系统dsw” 这个文件f打开,或者在资源管理器中双击该文件,此时,VC+6.0会自动打开,并载入该 系统相关资源,点击Run命令菜单或者或用快捷键

3、Ctrl+F5运行该程序。程序类说明二叉树typedef struct BiTNode( char data; int c;struct BiTNode *LChild; struct BiTNode *RChild; *BiTree,*nodetype;nodetype p;函数分析:递归中序遍历Tint PreOrderTraverse(nodetype &T)(递归先序遍历 Tint InOrderTraverse(nodetype &T)(int PostOrderTraverse(nodetype &T)(递归后序遍历 Tint NUPre(nodetype &T)非递归先序遍历 T

4、int NUIn(nodetype &T)非递归中序遍历Tint NUPost(nodetype &T)非递归后序遍历 Tvoid change(nodetype &T)(交换左右子树int InitBiTree(nodetype &T)(构造空二叉树nodetype Intertl(char x,nodetype &T)(在结点的左子树插入 xnodetype Intertr(char x,nodetype &T)(/在结点的右子树插入 x/返回深度叶子节点数目层次遍历从文件中读取信息并建立二叉树int Assign(char v,nodetype &e)(结点 e 赋值为 vint dee

5、p(nodetype &T,int n)( int leaves(nodetype &T)( void LevelOrder(BiTree T)( void create(nodetype &T)(模块分析我设计的系统,主要分为两大模块1二叉树模块2遍历模块 系统主要完成以下功能:1二叉树模块:1交换左右子树2构造空二叉树3在结点的左子树插入x4在结点的右子树插入x5结点e赋值为v6返回深度7叶子节点数目8从文件中读取信息并建立二叉树2遍历模块1递归先序遍历T2递归中序遍历T3递归后序遍历T4非递归先序遍历T5非递归中序遍历T6非递归后序遍历T7层次遍历文件信息abcdefafedcb#各种遍

6、历二叉树的信息叶舌至点数目2 高度 不皇尧全二叉树*“茂度土竺.以树的形态显示存在的不足与对策由于自身能力有限,所以没有设计非常好的交互界面。在设计过程中由于设计者的编程功底欠缺,因此学习过程较为艰辛,需要解决的问题也比较 多。在以后的学习中,应该循序渐进,不可急于求成,先打好基础,这样才能更好地发展。体验感悟在编写程序的过程中,深切的体会到自身能力还有待提高,通过大规模的查询网上资料 与相关书籍我学习到了很多以前不知道的编程方法与各种奇妙的函数语句时,提高了自 己对程序设计本身的兴趣,更加乐意去学习这方面的新的东西,并在不断地自我挑战中 收获着,或知识技能,或信心勇气。希望自己在今后的学习中

7、可以更好的完善自我。序源代码#ifndef NUM1_H#define NUM1_H#include#include #include using namespace std;int n=0;int n1=0;typedef struct BiTNodechar data;int c;struct BiTNode *LChild;struct BiTNode *RChild;*BiTree,*nodetype;nodetype p;void Visit(nodetype &T)if(T!=NULL)coutdatac=0;T-LChild=NULL;T-RChild=NULL;n=0;retu

8、rn 1;nodetype Intertl(char x,nodetype &T)在结点的左子树插入 xnodetype p;if(T=NULL)coutdata=x;p-LChild=NULL;p-RChild=NULL;if(T-LChild=NULL)T-LChild=p;elsep-LChild=T-LChild;T-LChild=p;return T;nodetype Intertr(char x,nodetype &T)在结点的右子树插入 xnodetype p;if(T=NULL)coutdata=x;p-LChild=NULL;p-RChild=NULL;if(T-RChild

9、=NULL)T-RChild=p;elsep-RChild=T-RChild;T-RChild=p;return T;int DestroyBiTree(nodetype &T)(销毁二叉树if(T)free(T);return 1;return 0;int ClearBiTree(nodetype &T)清空二叉树nodetype t;if(t=(nodetype)malloc(sizeof(nodetype)=NULL)return 0;t-LChild=NULL;t-RChild=NULL;T=t;n=0;return 1;int BiTreeD(BiTree T)返回二叉树的结点数re

10、turn n;char Root(nodetype &T)int t;t=T-data;return t;char Value(nodetype &T ,nodetype &e)返回 e 值return e-data;int Assign(char v,nodetype &e) 结点 e 赋值为 ve-data=v;n+;return 1;void ctree(char stack1,char stack2,nodetype &T,int k)int i;char a,s1100,s2100;if(k=0)return;a=stack1k-1;Assign(a,T);if(k=1)return

11、;for(i=0;ik;i+)if(a=stack2i)break;if(i!=k-1)for(int j=i;jRChild,k-1-i);for(int j=0;jLChild,i); void create(nodetype &T)char stack1100,stack2100;int m=0;fstream fp;fp.open(a.txt,ios:in);if(fp.fail()cout LChild=NULL)&(T-RChild=NULL)return n;if(T-LChild!=NULL)i=deep(T-LChild,n+1);if(T-RChild!=NULL)j=deep(T-RChild,n+1);n=(ij)?i:j;return n;nodetype parent(nodetype &T,nodetype &e)返回 e 的双亲nodetype p;if(T=NULL)return NULL;if (T-LChild=e)|(T-RChild=e) return T;if (T-LChild!=NULL)p=parent(T-LChild,e);return p;if (T-LChild!=NULL)p=par

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号