- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
填空法讲授二叉树遍历教学探讨
摘要:本文从教学实践的角度出发,阐述了学生对“数据结构”课程教学中二叉树遍历这一知识点不易理解的问题,并提出一种新的方法——填空法解决这一问题。通过对填空法的基本原理和讲授方式的探讨,使学生产生兴趣从而提高该知识点的课堂教学效果。br 关键词br本文来自:计算机毕业网 :填空法;二叉树;遍历br br 数据结构是计算机专业极其重要的专业基础课。所有数据结构中,树是非常重要的一种,尤其是二叉树,学习者是应该牢固掌握的。在学习了较为简单的线性表之后,学生开始接触了较为复杂的数据结构——树。概念树是容易接受的,可一旦讲到对树的建立和运算等问题时,很多学生或多或少地会感到一些困惑,尤其是二叉树的遍历,看似简单的递归算法,可要理解其遍历过程,未必能够一目了然。br br 1提出问题br br 对于二叉树遍历过程的讲解,传统的讲法以递归算法为蓝本,加上图示的辅助,帮助学生理解该算法怎样实现在树的遍历中如何调用对子树的遍历,如何输出结点以及如何返回,返回到哪一个结点。由于学生接触的递归算法不多(最多在C语言、数据结构的“栈”中有所学习,而且C语言大多在大一第一学期学习,关于算法和递归等知识的理解不够),所以理解不是很好,教起来也不轻松。多次讲解此处知识后我们发现,如果以二叉树的图示为蓝本讲解,使学生反向理解二叉树的遍历算法效果要好很多。这样,不仅使学生容易理解二叉树的遍历过程,而且对递归这一常用的算法设计方法也有更深刻的理解,下面将总结后的经验与大家共勉。br br 2“填空法”遍历二叉树br br 对二叉树中的任何一个结点来说,它都有自己的左、右子树(当然有些可视为空)。那么,对于三种遍历方法:前序、中序、后序,我们无非是将该结点作为根,然后按照一定的顺序去遍历该结点及其左、右子树,同时还能确定的是:无论哪种遍历,左子树必定在右子树之前遍历。因此,我们可以将整个树的遍历过程看作根在A(左子树遍历序列)B(右子树遍历序列)C这一过程中可能出现的A、B、C三个位置之一,进而,可将二叉树中任何一个结点的遍历视作上述过程。由此我们可以发现,无论是前序、中序、后序哪种遍历方式,都可以将遍历过程中的任何一步作为当前结点与其左、右子树遍历顺序的填空过程,只要确定了或前、或中、或后的遍历顺序,即确定了二叉树中任一结点在上述过程中的A或B或C的位置,进而将遍历的结点依次填写在对整个二叉树遍历序列的相应位置上。此时我们发现,整个遍历过程的重点已经不在左子树、根、右子树的遍历顺序上了,因为对每个结点来说,一旦遍历顺序定则三者位置定,重点转移到遍历到任一结点时,该结点在整个遍历序列中的具体位置上了,所以,由于位置的确定,先遍历左子树或是右子树已经不重要了。下面以一个具体的实例来说明填空法的详细讲解过程。br br 例求下图所示二叉树的中序遍历序列首先,为数中的所有结点标号(可用学生最易接受的层次遍历顺序依次为每层结点标号),接下来便开始遍历,按照中序遍历的顺序,任一结点在以其为根的子树中的位置是(左子树)该结点(右子树),因此,对于结点A,我们可以用(1左)A(1右)这样的公式来表示,接下来,无论我们先遍历A的左子树或右子树,则A及其左子树在遍历的序列中的位置是不变的,A的左子树是以B为根结点的,因此该子树的遍历序列可用(2左)B(2右)来表示,由于B右为空,B左只有一个结点D,因此,(2左)B(2右)所表达的遍历序列即DB,也即在(1左)A(1右)中的(1左);再看(1右)是以C为根结点的子树,我们同样可以用(3左)C(3右)来表示该子树的中序遍历,以后的遍历过程依次类推,那么在讲课过程中,我们实际上就可以按照以下的填空步骤来讲解该二叉树的遍历过程。br (1左)A(1右)br (2左)B(2右)A(3左)C(3右)br DB A(5左)E(5右)C(6左)F(6右)br DBAEGCHFbr 由此可得该二叉树的中序遍历序列为DBAEGCHF,那么同时我们也可以看出为什么在填空法中要为树中结点标唯一的号,这是因为在二叉树中,结点的名字是很可能不唯一的,假如在填空的过程中用A左、A右来表示其左右子树的话很容易与其他重名结点的遍历混淆,在结点较多的情况下,发生混淆的可能性就更大。同样的道理,若是前序遍历二叉树,那么可以用类似A(1左)(1右)这样的公式表示,后序遍历则是(1左)(1右)A来表示,填空的方法基本相同。br br 3总结br br 使用“填空法”讲授二叉树遍历的优是显而易见的,直观的讲述和演示使学生能够很快掌握二叉树遍历的过程。此外,在遇到较为复杂的二叉树需要写出遍历序列时,填空法更显示出它的优点,比如对表达式的
文档评论(0)