二叉树的建立和遍历的演示.docx
《二叉树的建立和遍历的演示.docx》由会员分享,可在线阅读,更多相关《二叉树的建立和遍历的演示.docx(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、系主任(或责任老师)签名:2007年7月2日题 目:二叉树的建立和遍历的演示初始条件:理论:学习了数据结构课程,把握了基本的数据结构和常用的算法;实践:计算机技术系试验室供应计算机及软件开发环境。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等详细要求)1、系统应具备的功能:(1)选择树的存储结构,建立二叉树;(2)用递归算法和非递归算法实现二叉树的遍历(3)二叉树遍历的演示2、数据结构设计;3、主要算法设计;4、编程及上机实现;5、撰写课程设计报告,包括:(1)设计题目;(2)摘要和关键字;(3)正文,包括引言、需求分析、数据结构设计、算法设计、程序实现及测试、 不足之
2、处、设计体会等;(4)结束语;(5)参考文献。时间支配:2007年7月2日一7日(第18周)7月2日 查阅资料7月3日 系统设计,数据结构设计,算法设计7月4日-5日 编程并上机调试7月6日撰写报告7月7日验收程序,提交设计报告书。指导老师签名:2007年7月2日二叉树的建立及遍历的实现旋转:将新加上的虚线改为实线,并将虚线以及有关的实线顺时钟旋转45度。二叉树还原为一般树的步骤是:加线:若某结点是一父结点的左孩子,则将该结点的右孩子以及沿着右链搜寻到的全部 右孩子结点都用线与那个父结点连接起来;抹线:抹去原二叉树中全部结点与其右孩子的连线;旋转:将虚线及有关实线逆时钟旋转约45度,并将几个结
3、点按层次排列。二叉树通常有两类存储结构,挨次存储结构和链式存储结构。6 .设计心得体会通过编写这个比较基础的二叉树的建立和遍历的实现的程序,基本把握了以前学习的 一些C语言的学问。许多学问点都是通过二次看书才理解了,现在可以编写一些简洁的C 语言程序。借这个设计时间又把握了一些C语言编程的用法,对以后编写大一点的程序有 很大的关心。编写的时候虽然刚开头有些困难,但通过看书.询问同学和借由网络,都一点一点的解 决了。虽然编程有点枯燥,但是通过不断努力编写出来后心里还是特别兴奋的。就像学习 英语,一步一步的积累。在以后的学习中,盼望通过不断的编写争取写出一些功能较为浩 大的程序。7 .结束语本文主
4、要内容是二叉树的建立及其遍历的实现,计算结点数等等。是通过c语言编写的程序。参考文献1严蔚敏,吴伟名。数据结构,清华高校出版社2张颖江,胡燕。C语言程序设计,科学出版社3潭浩强。C程序设计,清华高校出版摘要:该程序主要部分有:基于静态二叉链的二叉树的建立及其遍历的实现,包括建立二 叉树,先序.中序.后序遍历二叉树,以及依据遍历数序计算二叉树中的结点数和叶子结点 数等。关键字:二叉树,建立,遍历,先序,中序,后序,结点数0.引言二叉树是一种树型结构,其特点是每个结点至多有两棵子树(有左右之分,次序不能颠倒) 其多应用在查找.排序.存储二叉链等中。对那些都有很大关心,二叉树的建立等只是基础, 是对
5、其的基本理解。1 .需求分析二叉树的建立.遍历和结点数的计算等等。2 .数据结构设计#include#include/*定义树的结点结构*/typedef struct TreeNodechar data;/*树中结点的数据是一个字符*/struct TreeNode *lchild;struct TreeNode *rchild;JTREENODE;int NodeNum = 0;/*统计数的结点数*/int LeafNum = 0;/*统计数的叶子结点数*/char ch = aJb, c,J,dJ e,甲,J g,int inc = 0;3 .算法设计二叉树建立/*建立一颗二叉树*/in
6、t CreateBiTree(TREENODE *T)/*按先序次序输入二叉树中结点的值,以空字符表示空树*/(char i;if(chinc+=, f)*T = NULL;else(printf(n%cnH,chinc-1);if(!(*T = (TREENODE *)malloc(sizeof(TREENODE) return -1;(*T)-data = chinc-1;printf(H%cnH,(*T)-data);CreateBiTree(&(*T)-lchild);CreateBiTree(&(*T)-rchild);)return 1;)3. 2先序遍历/*先序遍历二叉树*/in
7、t PreOderTraverse(TREENODE *T)(if(T)(printf(n%c H,T-data);PreOderTraverse(T-lchild);PreOderTraverse(T-rchild);)return 1;)3. 3中序遍历/*中序遍历二叉树*/int lnOderTraverse(TREENODE *T)(if(T)(lnOderTraverse(T-lchild);printf(n%c H,T-data);lnOderTraverse(T-rchild);)return 1;)3. 4后序遍历/*后序遍历二叉树*/int BackOderTraverse(
8、TREENODE *T)if(T)BackOderTraverse(T-lchild);BackOderTraverse(T-rchild); printf(%c H,T-data);return 1;)3. 5计算结点树/*采用先序遍历来计算树中的结点数*/ void CountNodeNum(TREENODE *T) (if(T)(NodeNum +;CountNodeNum(T-lchild);CountNodeNum(T-rchild);)3. 6计算叶子结点数/*采用先序遍历计算叶子节点数*/void CountLeafNum(TREENODE *T)(if(T)(if(!(T-lc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 建立 遍历 演示
限制150内