《数据结构[Python语言描述]》教案第12课树和二叉树(6.4-6.5).docx
《《数据结构[Python语言描述]》教案第12课树和二叉树(6.4-6.5).docx》由会员分享,可在线阅读,更多相关《《数据结构[Python语言描述]》教案第12课树和二叉树(6.4-6.5).docx(7页珍藏版)》请在优知文库上搜索。
1、课题第12课树和二叉树(6.4-6.5)课时2课时(90min)教学目标知识目标:(1)掌握哈夫曼树的构造方法及哈夫曼编码(2)掌握树的存储结构,以及树、森林和二叉树的转换方法(3)掌握树和森林的遍历方法技能目标:能利用哈夫曼树解决编码问题素质目标:培养勇于探索、知难而进、追求卓越的创新精神教学重难点教学重点:哈夫曼树的构造方法及哈夫曼编码,树、森林和二叉树的转换方法,树和森林的遍历方法教学睚点:树、森林和二叉树的转换方法,树和森林的遍历方法教学方法问答法、讨论法、i并授法、实践法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤考勤【教师】使用APP进行签到【学生】班干部报请假
2、人员及原因问题导入【教师】提出以下问题:什么是哈夫曼树?【学生】思考、举手回答传授新知【教师】通过学生的回答引入要讲的知识,介绍哈夫曼树的构造方法及哈夫曼编码,树、森林和二叉树的转换方法,树和森林的遍历方法6.4哈夫曼树6.4.1 哈夫曼树的定义哈夫曼树是一种特殊的二叉树.在介绍它的定义之前,首先了解如下基本术语.(】)路径:从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径。(2)路径长度:从树中一个结点到另一个结点所经过的分支数目。(3)树的路径长度:从树的根结点到树中所有结点的路径长度之和。(4)结点的权:在实际应用中,人们为树的每个结点赋予的一个具有某种实际意义的数值称为该结
3、点的权。(5)结点的带权路径长度:从树的根结点到该结点之间的路径长度与该结点的权的乘积。(6)树的带权路径长度:树中所有叶子结点的带权路径长度之和,通常记作WPL=1以北=I其中,为叶子结点个数,Wk为第个叶子结点的权值,/%为根到第Z个叶子结点的路径长度.哈夫曼树又称为最优二叉树,是n个带权叶子结点构成的所有二叉树中带权路径长度最短的二叉树。6.4.2哈夫曼树的构造哈夫曼树的构造方法如下.(1)用给定的。个权值以物,陶对应/7个结点,构成具有棵二叉树的森林F=T1,T2Tn,其中每棵二叉树T”只有一个权为W的根结点,其左、右子树均为空.(2)从森林中选取两棵根结点权值最小的二叉树,分别作为左
4、、右子树构造一棵新的二叉树,且新的二叉树的根结点的权值为其左、右子树根结点的权值之和。(3)从森林中删除(2)中选取的两棵二叉树,并把新构成的二叉树加入森林中.(4)重复(2)和(3)的操作,直到森林中只含有一棵二叉树,这棵二叉树即为哈夫曼树。【教师】用多媒体展示“哈夫曼树的构造过程”图(详见教材),并介绍哈夫曼树的构造过程【提示】在构造哈夫曼树的过程中,两棵二叉树作为根结点的左、右子树是任意的,因此构造出来的哈夫曼树可能不是唯一的,但是其带权路径长度一定是相同的。6.4.3哈夫曼编码为防止编码有二义性,要求每一个字符的编码都不能是另一个字符编码的前缀,这种编码称为前缀编码。利用哈夫曼树可以设
5、计出最优的前缀编码,具体方法如下。(1)以每个字符的出现频率为权值构造一棵哈夫曼树。(2)将哈夫曼树中的每一条左分支标记为O,每一条右分支标记为I0(3双根结点到每个叶子结点所经过的路径分支组成的。和】的序列构成了该结点对应字符的编码,这个编码称为哈夫曼编码。【教师】用多媒体展示“哈夫曼编码”图(详见教材),并介绍哈夫曼编码过程【教师】讲解实例6-4(详见教材)6.5树和森林【教师】随机邀请学生回答以下问题树和森林的区别是什么?【学生】聆听、思考、回答森林是若干棵互不相交的树的集合,而树去掉根结点就变成了森林,森林加上根结点就变成了树。6.5.1 树的存储结构1 双亲表示法双亲表示法是用一组连
6、续的存储空间来存储树中的结点,结点的存储顺序为从上到下、同一层从左到右。在每个结点中设置一个指针Parent,用于指示其双亲结点的位置。【教师】用多媒体展示“树及其双亲表示的存储结构”图,并介绍该存储结构dataparent其中,dala域用于存储结点的数据信息;Parent域用于存储其双亲结点的地址。由于根结点没有双亲结点,故将其Parent域设置为-1。双亲表示法结点的定义如下。classNode:definit(self,data,parent):self.data=data#data域self.parent=parent#parent【高手点拨】双亲表示法利用了树的每个结点(根结点除外
7、)只有唯一双亲结点的性质,在这种存储结构中,求某个结点的双亲结点非常容易,但是求某个结点的孩子结点则需要遍历整棵树。2 .孩子表示法孩子表示法是将树中每个结点的孩子结点排列起来,构成一个线性表。由于每个结点的孩子结点个数不确定,所以通常采用单链表作为存储结构,称为孩子链表。n个结点即有n个孩子链表(叶子结点的孩子链表为空表)。孩子表示法中包含两种结点,一种是表头数组的表头结点,也就是双亲结点(见图6-35),另一种是孩子链表的孩子结点(见图6-36).datafirstchildchildnext图635表头结点结构图6-36孩子结点结构其中,表头结点的data域用于存储结点的数据信息;fir
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构【Python语言描述 数据结构 Python 语言 描述 教案 12 二叉 6.4 6.5