二叉树遍历的实现与教学演示毕业论文(设计)

上传人:紫** 文档编号:53437950 上传时间:2022-02-10 格式:DOC 页数:26 大小:127KB
收藏 版权申诉 举报 下载
二叉树遍历的实现与教学演示毕业论文(设计)_第1页
第1页 / 共26页
二叉树遍历的实现与教学演示毕业论文(设计)_第2页
第2页 / 共26页
二叉树遍历的实现与教学演示毕业论文(设计)_第3页
第3页 / 共26页
资源描述:

《二叉树遍历的实现与教学演示毕业论文(设计)》由会员分享,可在线阅读,更多相关《二叉树遍历的实现与教学演示毕业论文(设计)(26页珍藏版)》请在装配图网上搜索。

1、二叉树遍历的实现与教学演示毕业论文(设计) 本科生毕业论文设计题 目: 二叉树遍历的实现与教学演示 目 录摘要关键字1Abstract(Key words)1前言21 二叉树的概述21.1 二叉树的定义21.2 二叉树的性质31.3 二叉树的存储结构42 二叉树的遍历62.1 常用的二叉树遍历的算法62.2二叉树遍历的C程序演示过程92.3 非递归遍历二叉树122.4 二叉树遍历算法的应用143基于FLASH的二叉树遍历课件应用实现153.1课件简介153.2结构设计分析153.3主要功能164 教学设计18结束语20参考文献21致 谢22二叉树遍历的实现与教学演示摘要: 所有数据结构中,树是

2、非常重要的一种,尤其是二叉树的遍历,学习者是应该牢固掌握的。在学习了二叉树的存储结构之后,学生开始接触了二叉树的遍历。很多学生或多或少地会感到些困惑,看似简单的递归算法,可要理解其遍历过程,未必能够一目了然。其主要原因在于二叉树的遍历执行过程较复杂,不容易理解,学生会会此失去兴趣,因此针对如果进行讲解,学生在理解上也有一定的难度。本文对于二叉树的遍历执行过程给予了直观的教学演示,主要通过图形的形式展示,可以一目了然,让同学们对此不排斥,从而达预期的教学效果。可以从理论角度出发,边讲解边演示让同学们听懂、学会。还从信息技术与课程整合的角度,制作FLASH课件应用于教学中,提高教学质量。从而更好的

3、进行课堂教学,使学生更清楚、更容易的理解二叉树的遍历过程。关键字: 二叉树; 遍历; 多媒体Abstract: All of the data structure, the tree is a very important, especially in the binary tree traversal, learners should have a solid grasp of. In the study of the storage structure of the binary tree, the students came into contact with a binary tree

4、 traversal. Many students will feel more or less some confusion appears to be simple recursive algorithm, Ergodicll understand the process, may not be able to clear at a glance. The main reason lies in the implementation of binary tree traversal of the more complicated process, it is not easy to und

5、erstand, students will lose interest in this, so if on for students in understanding have a certain degree of difficulty. In this paper, the binary tree traversal of the implementation process to give a visual presentation of the teaching, mainly through the form of graphics display, you can at a gl

6、ance, while on the side of presentation so that students understand and learn. Information Technology and also from the perspective of curriculum integration, the production of courseware used in FLASH teaching, improve teaching quality. In order to better classroom teaching so that students more cl

7、early and more easily understand the process of binary tree traversal. Keywords: Binary Tree; Ergodic; Multimedia 前言 树是另外一种非线性数据结构,二叉树就是其中一种,这种数据结构在日常生活中是十分常见的,二叉树的遍历是树结构的一种常用的、重要的运算,是树的其它运算的基础。从结构上来看,在对它进行操作时,总是需要逐一对每个数据元素实施操作,这样就存在一个操作顺序问题,由此提出了二叉树的遍历操作。即如何按一定的规律和次序访问树中的每个结点,使得每个结点被访问一次,而且仅被访问一次。

8、真正理解这一运算的实现及其含义有助于许多二叉树运算的实现及算法设计。然而,许多初学者开始时的学习效果不理想,原因是较难理解其内在规律。二叉树的遍历方法及相应过程如下。1 二叉树的概述1.1 二叉树的定义 定义: 二叉树是nn0个结点的有限集,它或为空树n0,或由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树构成。图1-1图1-1 特点: 每个结点至多有2 棵子树即不存在度大于2的结点二叉树的子树有左、右分,且其次序不能任意颠倒。 二叉树的五种基本形态:(如图1-2)(图1-2)1.2 二叉树的性质 【性质1】在二叉树的第 i 层上至多有2i-1个结点 证明:用数学归纳法证明。 ? i

9、1时,只有一个根结点,2=10是对的。 ? 假设对所有j1ji命题成立,即第j层上至多有2j-1 个结点。 那么,第i-1层至多有2i-2个结点。 又二叉树每个结点的度至多为2。 所以第i层上最大结点数是第i-1层的2倍,即2*2i-2 2i-1 故命题得证 【性质2】深度为k的二叉树至多有2k-1个结点k1 由性质1可以得出,1至K层各层最多的结点个数分别为:20,21,22,23,2K-1。这是一个以2为比值的等比数列,前n项之和的计算公式为:其中a1为第一项,an为第n项,q为比值。可以得到,该数列前K项之和为: 【性质3】 对于任意一棵二叉树BT,如果度为0的结点个数为n0,度为2的结

10、点个数为n2,则n0n2+1。 证明:假设度为1的结点个数为n1,结点总数为n,B为二叉树中的分支数。因为在二叉树中,所有结点的度均小于或等于2,所以结点总数为: nn0+n1+n2(1) 再查看一下分支数。在二叉树中,除根结点之外,每个结点都有一个从上向下的分支指向,所以,总的结点个数n与分支数B之间的关系为:nB+1。 又因为在二叉树中,度为1的结点产生1个分支,度为2的结点产生2个分支,所以分支数B可以表示为:Bn1+2n2。 将此式代入上式,得: nn1+2n2+1 (2) 用(1)式减去(2)式,并经过调整后得到:n0n2+1。 如果一个深度为K的二叉树拥有2K-1个结点,则将它称为

11、满二叉树。 满二叉树:(如图) (图1-3) 完全二叉树:有一棵深度为h,具有n个结点的二叉树,若将它与一棵同深度的满二叉树中的所有结点按从上到下,从左到右的顺序分别进行编号,且该二叉树中的每个结点分别与满二叉树中编号为1n的结点位置一一对应,则称这棵二叉树为完全二叉树。 【性质4】 具有n个结点的完全二叉树的深度为 log2n+1。其中,log2n 的结果是不大于log2n的最大整数。 证明:假设具有n个结点的完全二叉树的深度为K,则根据性质2可以得出: 2K-1-1n2K-1 将不等式两端加1得到: 2K-1n2K 将不等式中的三项同取以2为底的对数,并经过化简后得到: K-1log2nK

12、 由此可以得到:log2n K-1。整理后得到:K log2n+1。 【性质5】 对于有n个结点的完全二叉树中的所有结点按从上到下,从左到右的顺序进行编号,则对任意一个结点i (1in),都有:(1)如果i1,则结点i是这棵完全二叉树的根,没有双亲;否则其双亲结点的编号为 i/2。(2)如果2in,则结点i没有左孩子;否则其左孩子结点的编号为2i。(3)如果2i+1n,则结点i没有右孩子;否则其右孩子结点的编号为2i+1。 下面我们利用数学归纳法证明这个性质。 我们首先证明(2)和(3)。 当i1时,若n3,则根的左、右孩子的编号分别是2,3;若n3,则根没有右孩子;若n2,则根将没有左、右孩

13、子;以上对于(2)和(3)均成立。1.3 二叉树的存储结构 二叉树也可以采用两种存储方式:顺序存储结构和链式存储结构。1、顺序存储结构 这种存储结构适用于完全二叉树。其存储形式为:用一组连续的存储单元按照完全二叉树的每个结点编号的顺序存放结点内容。下面是一棵二叉树及其相应的存储结构。(图1-4) 在C语言中,这种存储形式的类型定义如下所示:#define _TREE_NODE_SIZE 100typedef struct EntryType item_TREE_NODE_SIZE;/根存储在下标为1的数组单元中int n;/当前完全二叉树的结点个数QBTree; 这种存储结构的特点是空间利用率

14、高、寻找孩子和双亲比较容易。下面我们给出完全二叉树在这种存储形式下的操作算法。(1)构造一棵完全二叉树void CreateBTreeQBTree *BT,EntryType item ,int nif n_TREE_NODE_SIZE n_TREE_NODE_SIZE-1;for i1; in;i+ BT-itemiitemi;BT-nn;(2)获取给定结点的左孩子 int LeftCHildQBTree BT,int nodeif 2*nodeBT.n return 0; else return 2*node;RightChildBT,node与这个操作类似,读者可试着自行完成。(3)获取

15、给定结点的双亲 int ParentQBTree BT,int nodeif 1node&nodeBT.n return i/2;else return -1;2、链式存储结构 在顺序存储结构中,利用编号表示元素的位置及元素之间孩子或双亲的关系,因此对于非完全二叉树,需要将空缺的位置用特定的符号填补,若空缺结点较多,势必造成空间利用率的下降。在这种情况下,就应该考虑使用链式存储结构。 常见的二叉树结点结构如下所示:LchilditemRchild(图1-5) 其中,Lchild和Rchild是分别指向该结点左孩子和右孩子的指针,item是数据元素的内容。在C语言中的类型定义为:typedef

16、struct BTNodeEntryType item;struct BTNode *Lchild,*Rchlid;BTNode,*BTree; 下面(图1-6)是一棵二叉树及相应的链式存储结构。(图1-6) 这种存储结构的特点是寻找孩子结点容易,双亲比较困难。因此,若需要频繁地寻找双亲,可以给每个结点添加一个指向双亲结点的指针域,其结点结构如下所示。 LchilditemRchildParent(图1-4)2 二叉树的遍历2.1 常用的二叉树遍历的算法 在二叉树的一些应用中,常常要求在树中查找具有某种特征的结点,或者对树种全部结点逐一进行某种处理.这就提出了一个遍历二叉树树的问题,即如何按一

17、定的规律和次序访问树中的每个结点,使得每个结点被访问一次,而且仅彼访问一次。 所谓二叉树的遍历,是指按一定的次序访问树中的所有结点,使每个结点恰好被候访问一次。其中.遍历次序保证了二叉树上每个结点均被访问一次且仅有一次。遍历是二叉树中经常要用到的一种操作。因为在实际应用中.常常需要按一点顺序对二叉树中的每个结点逐个地进行访问,查找具有某一特点的结点,然后对这些满足条件的结点进行处理。 通过一次完整的遍历,可使二叉树中结点信息由非线性排列变为某种意义上的线性序列。也就是说,遍历操作使非线性结构线性化。 二叉树常用的遍历有先序遍历、中序遍历、后序遍历。所谓先序、中序、后序,区别在于访问根结点的顺序

18、。 这里,若T为根指针,则遍历左右子树时,是分别遍历以T-lchild 和T-rchild 为根指针的子树。 visit BiTree *T printf“%c”,T-data; 先序遍历: 若二叉树非空,则: 访问根结点 先序遍历左子树 先序遍历右子树 对应递归算法如下: void PreOrderBiTree *T if T!NULL printf%dt,T-data; preorderT-lchild; preorderT-rchild; 采用先序遍历得到的访问结点序列称为先序遍历序列,先序遍历序列的特点是:其第一个元素值为二叉树中根结点的数据值。 如图所示的二叉树,先序遍历序列为: e

19、 c b a j f m k z 中序遍历: 若二叉树非空,则: (1)中序遍历左子树 (2)访问根结点 (3)中序遍历右子树 对应递归算法如下: void PreOrderBiTree *T if T!NULL preorderT-lchild; printf%dt,T-data; preorderT-rchild; 采用中序遍历得到的访问结点序列称为中序遍历序列,中序遍历序列的特点是:若已知二叉树的根结点的数据值,以应该数据值为届,将中序遍历序列分为两部分,前半部分为左子树的中序遍历序列,后半部分为右子树的中序遍历序列。 如图所示的二叉树,中序遍历序列为: a b c e f j k m

20、z后序遍历:若二叉树非空,则:(1)后序遍历左子树(2)后序遍历右子树(3)访问根结点对应递归算法如下:void PreOrderBiTree *Tif T!NULL preorderT-lchild; preorderT-rchild; printf%dt,T-data; 采用后序遍历得到的访问结点序列称为后序遍历序列,后序遍历序列的特点是:其最后一个元素值为二叉树中根结点的数据值。 如图所示的二叉树,后序遍历序列为: a b c f k z m j e(图2-1)2.2二叉树遍历的C程序演示过程 下图是程序执行界面,用C语言实现的二叉树遍历的程序。(图2-2) 下图是遍历执行的具体过程,将

21、三种遍历各执行一遍。(图2-3)以下是二叉树遍历执行的过程部分代码:/*用图形显示创建好的树*/void DrawTreeTree *tift!NULL setcolorBLACK; setfillstyleSOLID_FILL,BLACK; fillellipset-x,t-y,9,9; setcolorWHITE; circlet-x,t-y,10; /*画圆*/ sprintfstr,%c,t-data;/*将内容转换成字符串输出*/ outtextxyt-x-3,t-y-2,str; ift-lchild!NULL/*左子树*/ linet-x-5,t-y+12,t-lchild-x+

22、5,t-lchild-y-12; DrawTreet-lchild; ift-rchild!NULL/*右子树*/ linet-x+5,t-y+12,t-rchild-x-5,t-rchild-y-12; DrawTreet-rchild; /*遍历时显示每个结点的过程*/void DrawNodeTree *t,int colorsetcolorYELLOW; setfillstyleSOLID_FILL,YELLOW; fillellipset-x,t-y,10,10; setcolorRED; sprintfstr,%c,t-data;/*将内容转换成字符串输出*/ outtextxyt

23、-x-3,t-y-2,str; setcolorcolor; outtextxys.x,s.y,str; setcolorRED; sprintfstr,%d,s.num;/*将遍历次序用数字显示在树的结点上*/ outtextxyt-x-3,t-y-20,str; s.num+; sleep1;/*画菜单的效果图*/void drawtangle2int i;setcolor14; /*黄*/setlinestyle0,0,3; /*实线,三个像素的宽度*/line150,200,320,200;line149,199,149,400;line149,400,320,400;line320,

24、200,320,400;fori203;i398;i+ /*划里面的深灰背景,是不断的划线来实现*/setcolor8;line151,i,318,i;delay4000;/*生成二叉树,h表示层次,t表示横坐标,w表示结点左右子树的宽度,随机数n确定结点是空或非空,如n为0,则为空*,但要限定确保结点数不少于三个*/Tree *InitTreeint h,int t,int wchar ch; int n;/*自动建立时随机赋值判断是否是NULL的标志*/ Tree *node; nrandom5; ifn0&nodeNUM3/*随机赋值时候确保自动建立的二叉树有三个结点*/ch.; els

25、e ch65+random25; ifch./*输入空格代表NULL*/return NULL; else ifh6|nodeNUM26/*如果树的层次已经到5或者结点树到达26个就自动返回NULL*/ return NULL; nodeTree*mallocsizeofTree; node-datach; node-xt;/*树的x坐标是传递过来的横坐标*/ node-yh*50;/*树的y坐标与层次大小有关*/ nodeNUM+; node-lchildInitTreeh+1,t-w,w/2; node-rchildInitTreeh+1,t+w,w/2; return node;/*前序

26、遍历*/void PreorderTree *tift!NULL s.x+15; DrawNodet,9; Preordert-lchild; Preordert-rchild; 2.3 非递归遍历二叉树先序非递归算法: 假设:T是要遍历树的根指针,若T ! NULL对于非递归算法,引入栈模拟递归工作栈,初始时栈为空。问题:如何用栈来保存信息,使得在先序遍历过左子树后,能利用栈顶信息获取T的右子树的根指针?方法1:访问T-data后,将T入栈,遍历左子树;遍历完左子树返回时,栈顶元素应为T,出栈,再先序遍历T的右子树。方法2:访问T-data后,将T-rchild入栈,遍历左子树;遍历完左子树

27、返回时,栈顶元素应为T-rchild,出栈,遍历以该指针为根的子树。void PreOrderBiTree T,Status *Visit ElemType e? InitStackS; while T!NULL | !StackEmptyS while T ! NULL VisitT-data ; PushS,T; T T-lchild; if !StackEmptyS PopS,T; T T-rchild; ?中序非递归算法:思路: T是要遍历树的根指针,中序遍历要求在遍历完左子树后,访问根,再遍历右子树。问题:如何用栈来保存信息,使得在中序遍历过左子树后,能利用栈顶信息获取T指针?方法:

28、先将T入栈,遍历左子树;遍历完左子树返回时,栈顶元素应为T,出栈,访问T-data,再中序遍历T的右子树。 算法:void InOrderBiTree T, Status *Visit ElemType e/ 流程图如右,当型循环 InitStackS; while T!NULL | !StackEmptyS while T ! NULL PushS,T; T T-lchild; if !StackEmptyS PopS, T; VisitT-data; T T-rchild; 后序非递归算法:思路: T是要遍历树的根指针,后序遍历要求在遍历完左右子树后,再访问根。需要判断根结点的左右子树是否

29、均遍历过。 可采用标记法,结点入栈时,配一个标志tag一同入栈0:遍历左子树前的现场保护,1:遍历右子树前的现场保护。 首先将T和tag为0入栈,遍历左子树;返回后,修改栈顶tag为1,遍历右子树;最后访问根结点。typedef struct stackElementBitree data;char? tag;stackElemType;算法:void PostOrderBiTree T, Status *Visit ElemType e/ 流程图如右,当型循环 InitStackS; while T!NULL | !StackEmptyS while T ! NULL PushS,T,0;

30、T T-lchild; while !StackEmptyS & GetTopTagS1 PopS, T; VisitT-data; if !StackEmptyS SetTopTagS, 1;? / 设置栈顶标记 T GetTopPointerS; / 取栈顶保存的指针 T T-rchild; else break; 2.4 二叉树遍历算法的应用 前面曾指出二叉树的遍历算法是二叉树算法的基础,下面结合实例对此展开讨论。根据所运用的基本思想来分,可划分为两个层次,其一是简单、直接的应用,其二是具有一定深度的方法的应用。 可以证明,二叉树的遍历算法对树T中每个结点都会执行一次且执行一次访问结点的

31、操作。其中访问结点的操作可以是多种形式及多个操作,例如输出结点值。利用这一特点,适当修改访问操作的内容,便可以得到许多问题的求解算法。下面给出几个典型问题的求解。 例:设计算法,按中序次序输出二叉树T中度为2的结点的值。 解:本算法的要求与中序遍历算法既有相同之处,又有不同之处。相同之处是输出次序均为中序;不同之处是此处不适输出每个结点的值,而是仅输出其中的度为2的结点,即有条件输出。为此,将中序遍历算法中的访问结点的操作改为条件输出结点的值即可。算法如下:Void inorderBnode *T IfT!NULL inorderT-lchild; IfT-lchild!NULL&T-rchi

32、ld!NULL printf%dt,T-data; inorderT-lchild; 例:设计算法,求二叉树T的结点数。 解:本算法不是要输出每个结点的值,所要求的仅是求出其中的结点数。我们可适应当修改遍历算法以完成要求:将某一遍历算法中的访问结点的操作改为记数操作,即将该结点的数目1累加到一个全局变量n中,每个结点都这样做一次,即完成了结点数的求解。采用中序遍历算法形式所得到的算法如下:Void inorderBnode *T IfT!NULL inorderT-lchild; n+; inorderT-lchild; 例:设计算法求解给定二叉树的高度。 解:由于求二叉树的高度难以采用由遍历

33、算法简单变化的方式来实现,因此,需要采用本小姐所讨论的方法来求解。现分析如下: 若T为空时,则其高度为0,求解结束。 否则,若T不为空,其高度应是其左、右子树高度的最大值再加1.假设其左右子树的高度能求解出来,则算法求解容易实现。其左右子树的高度的求解又可以通过递归调用本算法来完成。据此讨论可写出几种形式的算法,下面给出有值函数形式的算法。 设函数int high(Bnode *T)表示返回二叉树T的高度,因此highT-lchild、highT-rchild分别代表T的左右子树的高度,由前面的讨论可得算法如下:int high(Bnode *T)IfTNULLreturn 0;Else Re

34、turn highT-lchild,highT-rchild+1;3基于FLASH的二叉树遍历课件应用实现3.1课件简介 在二叉树教学过程中,如果能适当的使多媒体课件进行教学,这对于学生尽快掌握新的知识有很大的帮助,而且可以使教学内容更为直观、方便,可以大大提高学生的学习兴趣,减少枯感,从而增强学习效果。 为此,笔者编写了一个二叉树遍历的Flash教学课件,尝试着将自己的心得体会融入课件编写之中,在选择界面设计、交互方式等方面尽量多从学生的角度出发,希望这样能起到抛砖引玉的作用。3.2结构设计分析 确定课件的总体结构:整个界面是有六个按钮组成,其中一个是退出按钮,其它导航按钮分别代表五个教学环

35、节,点击导航按钮将会进入相应的教学内容。课件整体结构如图所示: 图(3-1) ?对应的Flash课件实例界面如下: 图(3-2) 3.3主要功能 其中每个模块所实现的功能如下: 点击“新课导入”按钮进入导入,在本界面中展示了一副手绘九寨沟旅游风景图,通过图片的变化,可发现与二叉树相似,由此引出二叉树遍历的概念,给学生一个初步的印象。 图(3-3) 点击“新课学习”按钮进入本节课的新授课内容,在此界面里主要描述了二叉树遍历的概念,以及本课所用到的二叉树的模型,通过“下一页”的按钮,可分别对二叉树的三种遍历进行讲解,并可通过遍历演示的按钮看到直观清晰的二叉树遍历过程,最后,再通过典型的例题分析对二

36、叉树的遍历进一步的了解。其中在每个分界面中都有“返回”按钮,点“返回”按钮可返回到主界面。下图是遍历的演示制作过程。 图(3-4) 图(3-5) 点击“巩固练习”按钮进入本课的练习题,并可以看到例题分析与答案。点“返回”按钮可返回到主界面。 点击“本课小结”按钮进入本课总结界面,“返回”按钮可返回到主界面。 点击“本课作业”按钮进入课后作业部分,内容与“巩固练习”相应,能达到学生课后巩固复习的作用。 点击“退出”按钮退出此课件。4 教学设计一、课程内容分析 本课是C程序设计中第五章函数中的第二、三节,是本章的基础。本节课主要学习认识二叉树,实现二叉树遍历。二、教学目标1、知识目标: (1) 理

37、解二叉树的性质与结构 (2) 掌握二叉树的三种遍历 (3) 能独立完成二叉树遍历的执行2、情感目标: 学习完本节课,学生对于程序编写的兴趣在以前的基础上有更大的加深。3、技能目标: 学完本节课后,学生应该学会二叉树遍历的执行,并且根据二叉树与二叉树的遍历,能应用的更广泛。三、教学方法 讲授法、演示法。 四、教学过程 首先大家一起回忆上节课学习的内容,回答二叉树的定义、基本性质和存储结构。(一)新课导入 出示课件,让同学们懂得本节课的重点。提问同学们有没有去过外地旅游,然后播放课件上的旅游景点图片,然后通过旅游时到每个景点照相留念的方式可知道,要想每个景点都走到,那得采取某种方式去合理安排,否则

38、会漏掉一些景点,这个就类似二叉树的遍历,引入新课。(二)新课学习1.知识的理解 逐个讲解遍历的种类和相应的过程 (1)先序遍历 若二叉树为空,则结束遍历操作;否则访问根结点; 先序遍历左子树; 先序遍历右子树。 (2)中序遍历 若二叉树为空,则结束遍历操作;否则 中序遍历左子树; 访问根结点; (3)后序遍历 若二叉树为空,则结束遍历操作;否则 后序遍历左子树; 后序遍历右子树; 访问根结点。2.典型例题分析 例:设计算法,按中序次序输出二叉树T中度为2的结点的值。 解:本算法的要求与中序遍历算法既有相同之处,又有不同之处。相同之处是输出次序均为中序;不同之处是此处不适输出每个结点的值,而是仅

39、输出其中的度为2的结点,即有条件输出。为此,将中序遍历算法中的访问结点的操作改为条件输出结点的值即可。算法如下:Void inorderBnode *T IfT!NULL inorderT-lchild; IfT-lchild!NULL&T-rchild!NULL printf%dt,T-data; inorderT-lchild; (三)巩固练习【例】:已知二叉树的先序和中序序列,写出该数的后序遍历。 先序:A B C D E F G H I J中序:C D B F E A I H G J 分析:由先序序列确定根;由中序序列确定左右子树。 解:1、由先序知根为A,则由中序知左子树为CDBF,

40、右子树为IHGJ,如图: 图(3-5) 2、再分别在左、右子树的序列中找出根、左子树序列、右子树序列。 先序:A B C D E F G H I J 中序:C D B F E A I H G J 图(3-5)3、最后对该树进行后序遍历。 后序遍历为:D C F E B I H J G A。(四)小结引深 树是另外一种重要的非线性数据结构,这种数据结构,在日常生活中是十分常见的,二叉树是一种很有用的非线性结构,研究二叉树的性质以及二叉树的遍历具有十分重要的意义。(五)作业 设一棵二叉树的中序遍历为:BDCEAFHG,后序遍历为:DECBHGFA。请画出这棵二叉树的逻辑图,并写出它的前序遍历结果。

41、结束语 本文完整的介绍了二叉树三种遍历方法的实现过程。这两个算法是对相关文献上的相关内容的深一层次的展开,进一步展示了在二叉树这种非线性结构上进行数据处理的统一性方法。同时为了易于学生理解,加入了遍历的直观演示效果。为此方面内容的教学提供了好的参考。 参考文献1、谭浩强著。c语言程序设计。清华大学出版社。2004年2、严尉民、吴伟民著。数据结构。清华大学出版社。2002年3、唐策善、李龙澍、黄刘生 编著。数据结构?用c语言描述。高等教育出版社。2006年4、敖副江译。数据结构与程序设计。清华大学出版社。2005年5、FLASH动画设计制作第一版高等教育出版社20026、项国雄、周勤编著,多媒体课件设计基础,高等教育出版社,2000年致谢 本文是在老师精心指导和大力支持下完成的。老师以其严谨求实的治学态度、高度的敬业精神、孜孜以求的工作作风和大胆创新的进取精神对我产生重要影响。她渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪。同时,在此次毕业设计过程中我也学到了许多了知识,实验技能有了很大的提高。而且也知道了自己有许多不足之处。 另外还要感谢,所有同学对我的无私帮助,使我得以顺利完成论文。同时其他老师也时常帮助我,在此我也衷心的感谢他。 最后,再次对关心、帮助我的老师和同学表示衷心地感谢。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!