《数据结构[Python语言描述]》教案第11课树和二叉树(6.3).docx
《《数据结构[Python语言描述]》教案第11课树和二叉树(6.3).docx》由会员分享,可在线阅读,更多相关《《数据结构[Python语言描述]》教案第11课树和二叉树(6.3).docx(8页珍藏版)》请在优知文库上搜索。
1、课题第11课树和二叉树(6.3)课时2课时(90min)教学目标知识目标:掌握二叉树的遍历方法,以及线索二叉树的线索化技能目标:能根据先序、中序和后序遍历方法快速得到二叉树的遍历序列素质目标:培养勇于探索、知难而进、追求卓越的创新精神教学重难点教学重点:二叉树的遍历方法、线索二叉树的线索化教学难点:二叉树的遍历方法、线索二叉树的线索化教学方法问答法、讨论法、i并授法、实践法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤考勤【教师】使用APP进行签到【学生】班干部报请假人员及原因问题导入【教师】提出以下问题:为什么要遍历二叉树?【学生】思考、举手回答传授新知【教师】通过学生的回
2、答引入要讲的知识,介绍遍历二叉树、确定二叉树、线索二叉树6.3遍历二叉树和线索二叉树6.3.1 遍历二叉树遍历二叉树是指按照一定的次序访问二叉树中的所有结点,且每个结点仅被访问一次。由二叉树的定义可知,任意一棵非空二叉树均由根结点、左子树和右子树三部分组成,因此,只要遍历这三部分就能遍历整棵二叉树.二叉树的遍历方法有4种,分别为先序遍历、中序遍历、后序遍历和层次遍历。1.先序遍历对于非空二叉树,先序遍历的递归算法步骤如下.(1)访问根结点。(2)先序遍历根结点的左子树。(3)先序遍历根结点的右子树。【提示】遍历过程其实是一个递归过程,遍历任何一棵子树时仍然是先访问子树的根结点,然后遍历子树根结
3、点的左子树,最后遍历子树根结点的右子树。【算法描述】defPreOrderTraverse(self,node):ifnodeisnotNone:#结点不为空print(node.data,end=,)#访问才艮结点self.preOrderTraverse(node.Ichild)#先序遍历根结点的左子树self.preOrderTraverse(node.rchild)#先序遍历才艮结点的右子树【教师】用多媒体展示“先序遍历二叉树”图(详见教材),并介绍先序遍历二叉树的过程(1)先访问根结点A,再遍历其左子树和右子树。(2)遍历根结点A的左子树,也就是遍历以B为根结点的二叉树.因此,按照先
4、序遍历步骤,先访问根结点B,再遍历其左子树和右子树。(3)遍历根结点B的左子树,也就是遍历以D为根结点的二叉树。因此,按照先序遍历步骤,先访问根结点D,再遍历其左子树和右子树.(4)-(18)洋见教材2.中序遍历对于非空二叉树,中序遍历的递归算法步骤如下。(1)中序遍历根结点的左子树。(2)访问根结点。(3)中序遍历根结点的右子树。【算法描述】defInOrderTraverse(self,node):if node is not None:#结点不为空#中序遍历根结点的左子树#访问根结点#中序遍历根结点的右子树self.InOrderTraverse(node.Ichild)print(no
5、de.data,end=)self.InOrderTraverse(node.rchild)【教师】用多媒体展示“中序遍历二叉树”图(详见教材),并介绍中序遍历二叉树的过程3.后序对于非空二叉树,后序遍历的递归算法步骤如下。(1)后序遍历根结点的左子树。(2)后序遍历根结点的右子树。(3)访问根结点。【算法描述】defPostOrderTraverse(self,node):ifnodeisnotNone:#名吉点、不为空self.postOrderTraverse(node.!child)#后序才由吉点的左子才可self.postOrderTraverse(node.rchild)#后序iZ
6、才影言点的右子才可#访问根结点print(node.data,end=*,)【教师】用多媒体展示“后序遍历二叉树”图(详见教材),并介绍后序遍历二叉树的过程4.层次遍历对于非空二叉树,层次遍历的算法步骤如下。(1)访问根结点(第1层)。(2)从左到右依次访问第2层的所有结点。(3)从左到右依次访问第3层的所有结点第h层的所有结点。【算法描述】defIevelOrderTraverse(Self):#结点不为空#当前层结点 当前层存在结点时 处理每一层结点左孩子结点不为空#访问左孩子结点 右孩子结点不为空#访问右孩子结点ifself.rootisnotNone:queue=self.rootwh
7、ilequeue:cur_node=queue.pop(0)print(cur_node.elemzend=,1)ifcur_node.!childisnotNone:#queue.append(cur_node.Ichild)ifcur_node.rchildisnotNone:#queue.append(cur_node.rchild)*【教师】用多媒体展示“层次遍历二叉树”图(详见教材),并介绍层次遍历二叉树的过程6.3.2确定二叉树【教师】随机邀请学生回答以下问题如何确定二叉树?【学生】聆听、思考、回答1.由先序和中序遍历序列确定二叉树由先序和中序遍历序列确定二叉树的过程如下.(1)根
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构【Python语言描述 数据结构 Python 语言 描述 教案 11 二叉 6.3