教学设计
课程基本信息
课题 二叉树的基本操作(第二课时)
教学目标
1. 掌握二叉树的两种建立方式。 2. 熟练掌握二叉树的三种遍历方式。
教学内容
教学重点: 1. 二叉树的建立及遍历。
教学难点: 1. 二叉树的前、中、后序三种遍历方式
教学过程
(1)情境导入 教师展示“贪吃蛇”小游戏画面,询问学生是否玩过该游戏,并简要说说该游戏的原理,同时提出利用“贪吃蛇”游戏思想来解决本节难点部分二叉树的遍历,让学生在玩中学,并保证学生一学就会。 设计意图:以游戏导入形式引起学生兴趣,带着好奇心进入接下来的学习。 (2)知识讲解 教师讲解二叉树建立方法,按照层的顺序进行,先由第1层开始,依次到下一层,在每一层中按照从左到右的顺序创建节点。用数据和链表两个的数据类型进行节点存储。 并引导学生针对以下问题进行思考,以自主学习的方式完成任务一。 对于图中的两棵二叉树,请学生阅读第97,98页,用数组表示示意图方式完成“完全二叉树”和“非完全二叉树”建立。 设计意图:以图片方式,吸引学生参与课堂,感知二叉树结构,并结合书本和已掌握的知识,以自主学习方式去思考如何用数组方式存储节点信息。 针对情景导入中的两棵二叉树,可以采用数组形式和链表形式存储节点信息。通过学生自主学习完成“完全二叉树”与“非完全二叉树”模拟建树过程。 ①与学生一起模拟二叉树的数组形式建树。 ②与学生一起模拟二叉树的链表形式建树。 设计意图:二叉树是一种逻辑结构,形象直观,但便于计算机处理,需要把非线性结构变成有意义的线性序列。 (3)自主学习与探究 以教材上例子为例,教师讲解二叉树遍历,即对二叉树的各个节点进行访问,即遍历操作。二叉树遍历,是指按照一定的规则和次序访问二叉树中的所有节点,使得每个节点都被访问一次且仅被访问一次。常见的遍历有前序遍历、中序遍历、后序遍历等概念性知识。 ①“抛砖引玉”让学生结合前序遍历的规则(特点显著),了解左右子树先左后右的原则后让学生观察前序遍历流程(如下图),提出让学生完成任务二中第1题。 任务二:1.根据“贪吃蛇”游戏原理与前序遍历的规则,请同学们尝试画出二叉树的“贪吃蛇”的行进路线,并把路线中遇到的节点写下来。(完成任务单图2.1的二叉树前序遍历) 此时,教师实时提出两个问题帮助学生思考: 1.根据“贪吃蛇”游戏原理生成的点,是否可以随机生成? 2.如果不是随机生成的点,那么生成的点的位置应该哪里? 教师与学生一起总结,前序遍历的贪吃蛇画法规律:在所有节点的左侧画点,之后从根节点开始,依次沿着节点进行划线,并将遇到的点对应的节点写下来,即为前序遍历结果。 ②“趁热打铁”教师总结完前序遍历“贪吃蛇”画法之后,及时提出任务二:2.根据前序遍历的“贪吃蛇”画法,尝试探究二叉树的中序和后序遍历画法。(完成任务单图2.2和2.3的二叉树中序和后序遍历) 教师邀请学生到讲台、展示自己的探究结果 教师与学生一起总结,中序遍历的贪吃蛇画法规律:在所有节点的下侧画点,之后从根节点开始,依次沿着节点进行划线,并将遇到的点对应的节点写下来,即为中序遍历结果。 教师与学生一起总结,后序遍历的贪吃蛇画法规律:在所有节点的右侧画点,之后从根节点开始,依次沿着节点进行划线,并将遇到的圈圈对应的节点写下来,即为后序遍历结果。 设计意图:以自主探究的学习方式让学生结合“贪吃蛇”游戏原理与遍历规则,用直观的画法帮助学生理解和掌握二叉树的遍历。 二叉树遍历拓展知识:一步一回头”完成二叉树的前序或后序的推测 教师详细介绍:已知前序中序推测后序 例如:前序:A B D H E C F 中序:D H B E A F C 方法描述:根据前序遍历原则,根节点总是处于遍历序列之首,确定 A 是根节点,结合中序 A 的位置确定树的左子树为:DHBE,右子树为:FC;在前序中划出左右子树部分; 左子树再结合前序遍历原则确定 B 是左子树的根节点,结合中序 B 的位置确定树的左子树为:DH,右子树为:E;在前序中划出左右子树部分 左子树再结合前序遍历原则确定 D 是左子树的根节点,结合中序 D 的位置确定 H 是右节点;此时完成二叉树左子树构造 开始的右子树为:FC ,结合前序遍历原则确定 C 是右子树的根节点,结合中序 C 的位置确定F 是左节点此时完成二叉树的构造 提出任务:结合“一步一回头”推测思路,请同学们完成已知中序和后序来推测前序 (4)二叉树的实践与体验 在本章学习中,我们已经掌握了二叉树遍历的各种方法,下面将通过Python语言的程序实现来进一步体验二叉树的遍历机制。 实践内容: 给出事先设计好的二叉树结构图,分别写出前序、中序和后序的遍历结果。通过输入Python程序分别建立、遍历二叉树,运行程序输出各种遍历结果,完成验证和体验。 实践步骤: 1.给定下面的二叉树,如右图所示。 2.分别写出该二叉树的前序、中序和后序遍历的序列。 前序遍历: 中序遍历: 后序遍历: 3.打开程序true.py二叉树代码。 结果呈现:基于上述实践任务,完成程序体验和结果验证。 内容结果情况运行程序,对比自己所写的遍历序列与程序输出的结果是否一致 尝试修改程序中的节点信息,输出书本第100页,如图4.2.8所示的表达式树的各种遍历序列,完成结果验证。前: 中: 后:
设计意图:让学生通过实际的上机体验二叉树的建立过程和遍历过程,同时验证二叉树遍历的结果是否正确,加深学生对遍历的程序性理解。 (5)课堂小结 知识梳理 ①二叉树的建立。 建立的方法:从上到下,从左到右 数据的结构:数组和链表 ②二叉树的遍历 前序遍历:根-左-右 中序遍历:左-根-右 后序遍历:左-右-根 ③程序验证与体验 (6)作业布置 基础作业(面向所有学生) ①完成作业练习 ②思考教材“问题与讨论”中用二叉树描述成绩等级。 ③完成教材“思考与练习”中的列举数据结构、数据类型和抽象数据类型三者之间的联系和区别。 设计意图:课后作业是课堂学习的延伸,是巩固和升华知识点的有效途径。