您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页《数据结构》中二叉树的教学方法探讨

《数据结构》中二叉树的教学方法探讨

来源:意榕旅游网
维普资讯 http://www.cqvip.com 6 宋玲吕强《数据结构》中--y..树的教学方法探讨 《数据结构》中二叉树的教学方法探讨 Study on the method of bintree in{data structure)) 宋玲 吕 强 250014 2.山东电力研究院济南250002 1.山东建工学院计算机系 济南【摘 要】本文概括、分析了《数据结构》课程的特点,针对二叉树,结合教学工作中存在的问 题。运用1美国学者Keller提出的ARCS动机模型和积累的实践经验提出相应的课改方案。最 后。给出了网上辅助学习的有关设想。 【关键词】数据结构 算法 教法 二叉树 在线学习 【中图分类号】TP311.12 G427 1 引言 【文献标识码】A 方式及其相应的运算。数据之间的逻辑关系,大致 有四种:线性结构、树形结构、图状结构和集合。数 据的存储结构指数据在计算机中的存储形式—— 顺序方式和链式方式。数据的基本运算为:建立、查 找、插入、删除、更新等。数据结构课程的内容包括 五个要素.如下图所示.分别是数据的逻辑结构、存 储结构、基本运算、相应的算法以及算法复杂性分 析。 \层次数据结构是计算机存储、组织数据的方式。在 程序的设计中。数据结构的选择是一个最基本也是 最重要的考虑因素。许多大型软件系统的构造经验 表明。系统实现的困难程度和系统构造的质量都严 重依赖于是否选择了最优的数据结构。数据结构和 算法是密不可分的。但决定系统构造的关键因素是 数据结构而不是算法。 《数据结构》作为计算机科学与技术专业的专 业基础课程,是一门核心课程。通过本课程的学习, 方面 、\ 抽象 实现 评价 数据表示 逻辑结构 存储结构 数据处理 基本运算 算 法 使学生能够从具体问题抽象出一个适当的数学模 型,也就是对应用所涉及的实际问题进行分析,从 中抽取操作对象,并根据数据对象之间的关系,选 择适合的数据结构组织数据,然后设计一个解决此 数学模型的算法,并初步掌握算法分析的能力,最 后应用一门高级程序设计语言来实现。所以这门课 程既可以锻炼学生的逻辑思维和抽象思维能力,又 培养学生综合运用离散数学、程序语言、程序设计 方法等相关知识来解决问题的能力。对这门课的理 解、掌握和拓展,将对学生编程能力有着深远的影 响.同时为后续课程的学习和从事软件开发奠定坚 实的基础。概括来说,数据结构指数据之间的关系, 不同结构的比较及算法分析 由于树型结构是一类重要的非线性数据结构, 本文将以二叉树为例来分析教学过程中存在的问 题以及相应的解决方法。 2教学过程中存在的问题 在教学过程中.发现学生在学习这门课的过程 中存在一些障碍,究其原因,主要有以下几个方面: (1)前导课程学得不扎实。主要表现在数学知 识比较薄弱,在进行算法分析时,学生存在的问题 较多。另外一个比较突出的问题是有关的高级程序 设计语言不能熟练应用。在“数据结构”中的算法大 都由类PASCAL或类C描述而成,PASCAL或C语 言作为数据结构的前导课程已讲授过了。但学生对 包括数据之间的逻辑关系、数据在计算机中的存储 作者简介:宋玲,女,山东建工学院讲师,山东大学在读博士生, 主要从事计算机应用研究。 计算机语言的理解较为浅显。无法得心应手地应用 维普资讯 http://www.cqvip.com 山东电力高等专科学校学报 第9卷(2oo6) Journal of Shandong College of Electric Power §摹蘧墨=≯器 q t丰 q 脯●嘴矗翻 第2期 q ■●抽硎●瞧 ■直t量 7 C、PASCAL等高级程序设计语言来解决问题。学生 程序设计的方法和思想也不够成熟。 (2)上机课时不充足、学生的程序调试能力欠 缺。算法本身比较抽象。关于某种数据结构的基本 操作的算法描述也比较分散.学生不容易系统地理 解整个抽象数据类型。教材中用类PASCAL或类C 语言的方法来描述算法。并且只描述出其主体部 分,其它部分如局部变量定义等经常被忽略掉,对 母 嚣 矗仔 ¨恚 / \ / / \ \ U / / / /、 / 、 于学生来说,不容易系统学习和上机实现。 (3)学生缺乏完整体系思想。计算机科学本身 是一个完整、系统的专业,对学生而言,一门一门课 程去学,课程之间不能融会贯通,将所学课程孤立 起来。另外学时有限,对某些章节不可能讲深讲透, 造成学生前后知识点之间隔离.不能及时消化和融 会贯通。 (4)学生的重视程度不够。目前各种可视化化 程序设计方法很多。借助于集成开发环境可以很快 地生成程序。一些学生认为只要掌握几种开发工具 就可以成为编程高手。根本没有必要花大力气学习 专业课。另外学生低估了本课程学习的难度。遇到 困难时,自信心不足,当困难积累到一定程度,往往 知难而退。甚至放弃。 3 改进方法 本文运用美国学者Keller提出的ARCS动机模 型。针对这些存在的问题并结合教学过程中的经验 和教训,以二叉树为例提出相应的教学改进方法。 (1)注意力(attention):抓住学生的注意力激发 和维持学习动机。针对数据结构的五个要素,在二 叉树的讲解中贯穿一条主线。即逻辑结构、存储结 构、如何通过算法实现基本运算。二叉树的逻辑结 构是非线性的。它的定义、有关术语和性质比较抽 象,存储方式既可顺序存储又可链式存储。顺序存 储仅适用于完全二叉树,链式存储比较灵活。应用 较广。这些内容借助于多媒体教学。以生动、形象、 灵活的方式激发学生的学习兴趣。通过多个感官来 获取信息。二叉树基本运算为建树、前序、中序、后 自 序遍历。针对具体的算法,通过《数据结构算法演示 系统》教学,在算法演示中将函数调用、具体实例和 算法执行过程中变量当前值的变化显示给学生。直 观生动。下图为二叉树的中序遍历递归算法的演 示。沿着这条主线展开。始终紧紧地抓住学生的注 意力。见图l / / U 结果:JT 图1 (2)相关性relevance):强调知识前后的连续性 和相关性。比如以中序遍历为例,在讲解之前,应该 让学生清楚如何建立起一棵二叉树。然后再进行中 序递归遍历,通过算法演示和讲解让学生掌握递归 过程中系统设立的“递归工作栈”的使用。这样既复 习了前面栈的知识。又巩固了中序遍历递归算法的 理解,并通过这个递归算法分析推导出非递归中序 遍历算法;见算法1、算法2、算法3。 typedef char SelemType; typedef char TElemType; typedef struct BiTNode{ 结点结构}/ TElemType data; struct Bi I’Node lchild. rchild; 左右孩子指针 / }BiTNode, BiTree; void InOrderTraverse(BiTree& 1f 中序递归遍历二叉树}/ 2 if(T) 3{ 4 InOrderTraverse(T—->lchild); 中序遍历左子树 / 5 prinff(”%c”,T一>data) 访问根节点}/ 6 InOrderTraverse(T—->rchild); 中序遍历右子树 / 7 } 8} 算法1 算法1中。通过图1中序遍历递归算法执行过 程中的递归工作栈的状态可见: (1)工作记录中包含每一层递归所需信息构成 一个“工作记录”。其中包括递归调用的语句编号 维普资讯 http://www.cqvip.com 8 宋玲 吕 强《数据结构》中二叉树的教学方法探讨 (返回地址)和指向根结点的指针(实在参数),当栈 顶记录中的指针值为非空时,应遍历左子树,即指 向左子树根的指针进栈。 (2)若栈顶记录中的指针值为空,则退至上一 层,若是从左子树返回,则访问当前层的根结点。 (3)若从右子树返回,则表明当前层的遍历结 束,应继续退栈。 从以上分析可知,在找到最左下结点之前,一 直进栈。我们在非递归遍历中将用GoFarLefl(Bi. Tree T,SqStack&S)实现,见算法2。开始访问最左 下结点,然后根据它是否存在右子树分别处理。见 算法3 BiTNode GoFarLefl(BiTree T,SqStack&S) 找 到最左下节点}/ { if(!T)return NUUJ; while(T->lchild) {Push(S, ; T=T->lchild; l retum T: l 算法2 void Inorder_I(BiTree& { 中序非递归遍历二 叉树 / SqStack S;BiTree t; SElemType e: InitStack(S); t=GoFarLeft fr,S)∥找到最左下的结点 while(0{ prinff(”%c”.t->data); if(t->rchild) t=GoFarLefl(t->rchild,S); else if(!StackEmpty(S))//栈不空时退栈 t=Pop(S,e); else t=NULL;//栈空表明遍历结束 l//while l//Inorder_I 算法3 继续分析二叉树遍历的动态特性来导出线索 二叉树的建立,添加一头结点,为了记下遍历过程 中访问结点的先后关系,附设指针pre始终指向刚 刚访问过的结点。线索化的过程即为修改指针的过 程。见算法4、算法5。 BiThrNode pre; void InThreading(BiThrTree& { if (,,对以P为根的非空二叉树进行线索化 InThreading >lchild);//左子树线索化 if(!T->lchild1 //建前驱线索 {T->LTag=Thread; T->lchild=pre;} if f!pre一>rchild1//建后继线索 {pre一>RTag=Thread; pre->rchild=T;l pre=T.g保持pre指向T的前驱 InThreading >rchild);//右子树线索化 、|| l//InThreading 算法4 void InOrderThreading(BiThrTree&Thrt, BiThrTree& {,,构建中序线索链表 ! rt=(BiThrTree)malloc(sizeof(Bi删- ode)))) prinff(”OVERnJ0W”); Thrt->LTag=Link; Thrt->RTag=Thread; Thrt一>rchild=Thrt; //添加头结点 if(1 1f)Thrt->lehild=Thrt; else{ T}ln一>lchild=T:pre=Thrt; InThreading( ̄; pre一>rchild=Thrt;//处理最后一个结点 pre->RTag=Thread; Thrt->rchild=pre;}l//InOrderThreading 算法5 (3)自信度(confident):激发学生的学习兴趣, 增强学生的自信心,变被动学习为主动学习。有 些学生在初期学习时,没有入门,掌握不好,随 着内容的深入,增加了难度,久而久之,容易破 罐子破摔。对此,首先鼓励这部分学生克服困难, 迎头赶上。从讲课内容上在讲解新课的同时,不 断穿插已学章节的复习和总结。并尽量增加课堂 教学的生动性,通过提问、答疑、交流学习经验 等来带动大家,营造一个良好的学习氛围。以此 来培养学生自我挑战和战胜困难的能力。课堂教 维普资讯 http://www.cqvip.com 山东电力高等专科学校学报 第9卷(2oo6) Journal of Shandong College of Electric Power 第2期 9 学中对基本算法一定讲清讲透。在算法的讲解中, (3)答疑与讨论:解答学生的疑问,并鼓励学生 讨论和贴贴子,通过头脑风暴法来理解所学知识. 激发学生的创造力。 以中序线索化(算法5、算法4)为例,分三个层次进 行讲解,第一层针对一棵二叉树实例,和学生一块 分析完成线索化需要完成哪几方面的工作——建 头结点、如果树非空,头结点的左指针指向树,pre 指向头结点,开始中序遍历进行中序线索化.最后 一(4)在线作业:教师提供一批题目及相关答案. 便于学生自学和复习。 (5)在线考试:建立题库,自我测试和评判来了 解自己学习地掌握情况。 (6)相关学习资料和链接:充分利用网上资源. 个结点线索化,在这种启发性引导下理出大致思 路。第二层次将算法逐步细化,手工一步步分析算 法的执行过程。第三层次将算法改为完整的Turbo C 程序或c++程序,从整体上让学生理解算法的意义 并通过运行程序,结果显示来加深学生对算法的理 解。通过这种层层讲解的方式逐步加深学生的理 解。提高学生学习的自信心。 (4)满意度(satisfaction):提供给学生真实的问题 解决情景,应用已学的知识解决问题.自信来源于 有意义的成功,成功来自于战胜困难的心理感受。 上机中根据学生的学习情况为不同的学生提供不 同难度的学习任务。对于水平较低的学生,教师具 体化的指导是很有必要的,提供部分C语言程序范 例,让这部分学生先模仿,再自己尝试去实现一些 算法。对水平较高的学生提出更高的要求,并试着 让他们去解决一些实际问题,比如约瑟夫环,电梯模 拟等。在解决过程中并不拘泥于书上的一些算法, 多鼓励学生自己去想办法.以锻炼学生的创新能 力。 总之,教和学都是一个循序渐进的过程,是个 动态交流的过程.在这个过程中师生之间相互配 合、相互学习。学生根据教师的讲解和要求去学习 和掌握学习内容.教师根据学生的反馈不断改进教 学方法和提高教学质量,只有这样,才能学好课程。 4结束语 前面所探讨的传统意义上的课堂教学并不是 学习《数据结构》的唯一途径,随着网络的普及,可 以充分利用网络的优势.给学生提供网络学习的机 会。在工作中,我们基本实现以下功能: (1)在线学习,内容包括教学课件、算法和完整 的C语言程序,并且提供学习的导航图。 (2)知识查询:课程中所涵盖的有关知识点。 拓展学生的学习空间。 (7)留言箱:提供师生交流的渠道。 参考文献 【l】严蔚敏,吴伟民.数据结构(C语言版)【M】. 北京:清华大学出版社,1997 【2】殷人昆,陶永雷,谢若阳,盛绚华.数据结构 (用面向对象方法与C++描述)【M】北京:清华大学 出版社.1999 【3】杨开成,李秀兰,樊.基于ARCS模型构 建《数据结构》在线学习系统【J].中国电化教育, 200l(1):51—54. [4】赵丽.“数据结构”教法浅析【J】.晋示范高等 专科学校校报,200l(3):27—28. 【5】郭蔚.在“数据结构”教学中应用多媒体的 几点尝试【J].河北工业大学成人教育学院学报,2002 (12) [6】郭翠英.试论数据结构课程的教学方法【J]. 山西广播大学学报,2000(9):24—25 [7]陈高云.《数据结构》多媒体课件的研究【J]. 安徽农业大学学报,2000,27(3):305~308 Abstract:The paper generalizes and analyses the characteristic of(data structure).Relevant improving method is ven according to incentive model of American scholar Keller nad practicing experience.At last, proposing an idea of assistnace learning through Intemet. Key words:data structure algorihtms teaching method bintree learning in intemet 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务