《数据结构[Python语言描述]》教案第16课查找(8.3-8.4).docx
《《数据结构[Python语言描述]》教案第16课查找(8.3-8.4).docx》由会员分享,可在线阅读,更多相关《《数据结构[Python语言描述]》教案第16课查找(8.3-8.4).docx(8页珍藏版)》请在第壹文秘上搜索。
1、课题第16课查找(83-8.4)课时2课时(90min)教学目标知识目标:(1)掌握二叉排序树、平衡二叉树和B树的基本概念和杳找过程(2)了解哈希表的概念,掌握哈希函数的构造方法和处第中突的方法(3)掌握哈希查找算法和哈希性能技能目标:能灵活运用动态查找算法和哈希查找算法解决实际应用中的查找问题素质目标:自觉培养发散思维,积极开拓思路,寻求问题的多种解决方法教学重难点教学重点:动态有找算法、哈希表的查找教学睚点:动态查找算法、哈希表的查找教学方法问答法、讨论法、i并授法、实践法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤考勤【教师】使用APP进行签到【学生】班干部报请假人员
2、及原因问题导入【教师】提出以下问题:什么是动态查找?【学生】思考、举手回答传授新知【教师】通过学生的回答引入要讲的知识,介绍动态查找算法、哈希表的查找8.3动态查找算法基于动态查找表的查找又称动态查找,其特点是查找表的结构在查找过程中动态生成。8.3.1 二叉排序树二叉排序树又称二叉杳找树、二叉搜索树,是一种结构特殊的二叉树。二叉排序树可以是一棵空树,也可以是具有如下性质的二叉树。(1)若它的左子树非空,则左子树中所有结点的关键字均小于它的根结点的关键字。(2)若它的右子树非空,则右子树中所有结点的关键字均大于它的根结点的关键字。(3)它的左、右子树也分别为二叉排序树。【教师】多媒体展示“二叉
3、排序树”图(详见教材),并介绍二叉排序树的性质由二叉排序树的定义可以得到二叉排序树的一些重要性质,具体如下.(1)中序遍历一棵二叉排序树可以得到一个关键字递增的有序序列。(2)整棵二叉排序树中关键字最小的结点是根结点的最左下结点(中序遍历序列的开始结点)。(3)整棵二叉排序树中关键字最大的结点是根结点的最右下结点(中序遍历序列的结束结点)若以二叉链表作为二叉排序树的存储结构,其结点定义如下.classBSTNode:#二叉排序树结点类def_init_(self,key,data,Ichild=None,rchild=None):self.key=key#关键字self.data=data#其
4、他数据项self.!child=!child#左子树域self.rchild=rchild#右子树域二叉排序树的定义如下。classBSTree:#二叉排序树类definit_(self,root=None):self.root=root#二叉排序树的根结点1.二叉排序树的插入和创建已知一个关键字为key的结点S,要将其插入二叉排序树中,且使插入后的树仍符合二叉排序树的定义,其基本步骤如下。(1)若二叉排序树为空,则S成为二叉排序树的根结点。(2)若二叉排序树非空,则将key与根结点的关键字进行如下比较.当key等于根结点的关键字时,停止插入。当key小于根结点的关键字时,将结点S插入根结点的
5、左子树。当key大于根结点的关键字时,将结点S插入根结点的右子树。(3)重复上述过程,直到将结点S插入二叉排序树中。【算法描述】【提示】创建二叉排序树的过程其实就是从一棵空二叉排序树开始,通过多次插入操作依次将新结点插入当前已生成的二叉排序树中。对于同样的数据元素序列,如果输入顺序不同,所创建的二叉排序树的形态也不同。2.二叉排序树的查找根据二叉排序树的特点,其直找的基本步骤如下。(1)若二叉排序树为空,则杳找失败.(2)若二叉排序树非空,则将给定值key与根结点的关键字进行如下I:匕较。当key等于根结点的关键字时,查找成功。当key小于根结点的关键字时,在根结点的左子树中继续查找。当hy大
6、于根结点的关键字时,在根结点的右子树中继续查找。(3)重复上述过程,直到查找成功或查找的子树为空(即查找失败)。【算法描述】详见教材在二叉排序树的查找中,若查找成功,则整个过程恰好是从根结点到待直找结点的一条路径;若查找失败,则整个过程是从根结点到某个叶子结点的一条路径。因此,二叉排序树的查找过程与折半查找类似,关键字比较次数不超过树的深度。但是,与折半直找不同的是,对于长度为的JI顺序表,其折半查找的判定树是唯一的,而对于含有个关键字的结点,其构造的二叉排序树却是不唯一的。(详见教材)3.二叉排序树的删除从二叉排序树中删除某个结点时,不能简单地将以该结点为根结点的子树全部删除,而应只删除该结
7、点,并且保证删除后的树仍然具备二叉排序树的性质。二叉排序树删除的基本步骤如下。(1)查找待删除结点是否在二叉排序树中,若不在,则不执行出可操作。(2)若待删除结点在二叉排序树中,假设待删除结点为p,其双亲结点为f,当结点p是f的左孩子结点(P是f的右孩子结点的情况与之羽以,不再赘述)时,有如下3种情况。当待删除结点p为叶子结点时,直接删除该结点即可。当待删除结点p艮有左子树或只有右子树时,可以将待删除结点P的左子树或右子树作为其双亲结点f的左子树。当待删除结点P既有左子树又有右子树时,在中序遍历整棵二叉排序树得到的按关键字有序排列的序列中,用待删除结点P的前驱结点或后继结点代替待删除结点P,并
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构【Python语言描述 数据结构 Python 语言 描述 教案 16 查找 8.3 8.4
