树和二叉树(三).

Slides:



Advertisements
Similar presentations
集团公司火力发电厂热工自动控 制系统的投入情况和问题分析 东北所热自室. 自动控制系统是机组热工专业管理水 平和设备状态的集中体现,一台机组 的自动投入率和自动调节品质体现了 机组的整体水平。同时,自动控制效 果的优劣,也是机组节能降耗目标的 实现手段和基础。
Advertisements

练一练: 在数轴上画出表示下列各数的点, 并指出这些点相互间的关系: -6 , 6 , -3 , 3 , -1.5, 1.5.
一、算法的基本概念 二、数据结构 三、栈和队列 四、排序方法 五、二叉树
二叉树在树结构的应用中起着非常重要的作用,因为对二叉树的许多操作算法简单,而任何树都可以与二叉树 相互转换,这样就解决了树的
主讲:计算机工程学院 李兰 答疑地点:主教学楼B区213
青春期男生女生交往.
金属学与热处理 主讲: 杨慧.
小学生游戏.
数据结构学习考 复习课(2) 主要内容: 第三部分:树、二叉树、森林.
数据结构作业及答案 (C语言版).
第6章 树和二叉树 树型结构是一类非常重要的非线性结构。直观地,树型结构是以分支关系定义的层次结构。
实用数据结构基础 第6章 树.
第6章 树 数据结构(C++描述).
机械CAD中常用的数据结构.
数据结构与算法 Data Structure Algorithms
第六章 二叉树和树 6.1 二叉树 6.2 二叉树的基本操作与存储实现 6.3 二叉树的遍历 6.4 线索二叉树 6.5 树和森林
第六章 树和森林 1、树、森林的概念 2、二叉树及其表示 3、遍历二叉树和线索二叉树 4、堆 5、树和森林 6、二叉树的计数 7、霍夫曼树
第6章 树与二叉树.
树.
树的基本概念 离散数学─树 南京大学计算机科学与技术系.
直线和圆的位置关系.
树(三) 2012初赛知识点梳理.
树和二叉树(四).
第五章 树及二叉树 1.树的定义和术语 2.二叉树:定义、性质、存储 3.二叉树的遍历 4. 二叉树遍历的迭代器类 *5. 中序穿线树 6. 最优二叉树及其应用 7. 树和森林.
第6章 树和二叉树 6.1 树的有关概念 6.2 二叉树 6.3 二叉树的遍历 6.4 遍历的应用 6.5 线索二叉树 6.6 树和森林
第六章 树和二叉树.
赵海燕 软件研究所 14 Apr 第5章 树与二叉树 之三 赵海燕 软件研究所 14 Apr
第五章 树与二叉树 树和森林的概念 二叉树 二叉树遍历 线索化二叉树 树与森林 堆 Huffman树.
Ch.6 树
第六章 树与二叉树 6.1 树的定义和基本术语 6.2 二叉树 6.3 遍历二叉树和线索二叉树 6.4 树和森林
9.1-1 按照竞争树的办法求最小值需n-1次比较,然后在lgn个与最小值比较过的元素中求出最小值即为原来n个元素的次小值,需lgn-1次比较,所以共需n+lgn-2次比较 题目是要证明3n/2-2是最少的比较次数,而不是要构造出这样的算法。我们把某个元素与其它元素间的大小关系称作一条信息,那么最大元素包含n-1条信息(这个元素比其它n-1个元素都大),同样,最小元素也包含n-1条信息,同时求出最大和最小元素就需要获得2n-2条信息。未比较过的元素记为N,比较后较小的元素记为S,较大的元素记为
辅导课程六.
湖北大学知行学院 教师:涂晓帆 Sunday, December 09, 2018
第六章 树和二叉树.
第8章 树和二叉树 树 二叉树 二叉树设计 二叉树遍历 线索二叉树 哈夫曼树 等价问题 树与二叉树的转换 树的遍历 主要知识点.
第5章 树和二叉树 北京师范大学 教育技术学院 杨开城.
数据结构 Data Structure 主讲人:王国军,郑瑾 CSU 中南大学信息院计科系
第5章 树和二叉树 5.1树 5.2二叉树 5.3二叉树的遍历 5.4线索二叉树 5.5树、森林与二叉树的转换 5.6哈夫曼树.
数据结构 Data Structure 主讲人:王国军,郑瑾 CSU 中南大学信息院计科系
第11讲 树和二叉树(二).
第六章 树 2019/1/14.
第六章 树与森林 树和森林的概念 二叉树 (Binary Tree) 二叉树的表示
第五章 树 5.1 树的定义 树是一类重要的非线性数据结构,是以分支关系定义的层次结构 定义
数据结构概论 第6章 树和二叉树 董黎刚 浙江工商大学信电学院.
动态规划(Dynamic Programming)
Tree & Binary Tree.
第一二节 树及二叉树.
2.1.2 空间中直线与直线 之间的位置关系.
无向树和根树.
顺序表的删除.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
单链表的基本概念.
第 四 讲 线性表(二).
第六章 树和二叉树.
用穷举法设计程序 南京师范大学 教育技术系 倪佳慧
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
第六章 二叉树和树 6.1二叉树 6.2二叉树遍历 6.3树和森林 6.4树的应用.
第5节 树 前两章学习的栈和队列属于线性结构。在这种结构中,数据元素的逻辑位置之间呈线性关系,每一个数据元素通常只有一个前件(除第一个元素外)和一个后件(除最后一个元素外)。在实际生活中,可以用线性结构描述数据元素之间逻辑关系的问题是很广泛的,但也有很多问题不能依靠线性结构来解决,例如家谱、行政组织机构等都是非线性的数据结构。其中树就是一种非线性的数据结构。
树和二叉树(四).
2019/5/21 实验一 离散傅立叶变换的性质及应用 实验报告上传到“作业提交”。 11:21:44.
#define RBTREE_RED 0 #define RBTREE_BLACK 1 typedef int dataType; typedef struct treeNode{ dataType key; int color; //red:0.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
基于列存储的RDF数据管理 朱敏
异分母分数加、减法.
第七章 搜索结构 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.
2019年9月11日星期三 离散  数学 计算机学院 冯伟森 2019年9月11日星期三.
本节内容 1. 平衡二叉树的定义 2.平衡化旋转 3.平衡二叉排序树的插入操作 昆山爱达人信息技术有限公司
第二章 线性表 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.
最小生成树 最优二叉树.
第五章 树和二叉树.
Presentation transcript:

树和二叉树(三)

内容回顾 二叉树的递归遍历方法 中序非递归遍历方法 二叉树的构造方法

5.4 树和森林 5.4.1 树的存储方式 5.4.2 森林与二叉树的转换 5.4.3 树和森林的遍历

教学目标 1.了解树的存储表示。 2.掌握森林与二叉树的转换方法。 3.掌握树的遍历方法。 4.了解森林的遍历方法。 计算机科学与技术系 4/ 计算机科学与技术系 信息与教育技术中心

5.4.1 树的存储方式 树有三种常用存储方式: ①双亲表示法 ②孩子表示法 ③孩子兄弟表示法 1、用双亲表示法来存储 ①双亲表示法 ②孩子表示法 ③孩子兄弟表示法 1、用双亲表示法来存储 思路:用一组连续空间来存储树的结点,同时在每个结点中附设一个指示器,指示其双亲结点在表中的位置。 data parents 1 树结构 2 3 n parents data 结点结构

例1: 双亲表示法 1 2 3 4 5 6 7 8 A B C D E F G H I 1 2 3 -1 A B C G E I D H F 例1: 双亲表示法 1 2 3 4 5 6 7 8 A B C D E F G H I 1 2 3 -1 A B C G E I D H F 1 缺点:求结点的孩子时需要遍历整个结构。

2、用孩子表示法来存储 思路:将每个结点的孩子排列起来,形成一个带表头(装双亲结点)的线性表(n个结点要设立n个链表);再将n个表头用数组存放起来,这样就形成一个混合结构。 1 2 3 4 5 6 7 8 g f e d c b a h b c 例如: a b e c d f h g d e f g h 在孩子表示法中查找双亲比较困难,查找孩子却十分方便,故适用于对孩子操作多的应用。

双亲孩子表示法 双亲表示法是将双亲表示法和孩子表示法相结合的结果。其仍将各结点的孩子结点分别组成单链表,同时用一维数组顺序存储树中的各结点,数组元素除了包括结点本身的信息和该结点的孩子结点链表的头指针之外,还增设一个域,存储该结点双亲结点在数组中的序号。 带双亲的孩子链表

思路:用二叉链表来表示树,但链表中的两个指针域含义不同。 左指针指向该结点的第一个孩子; 右指针指向该结点的下一个兄弟结点。 3、用孩子兄弟表示法来存储 思路:用二叉链表来表示树,但链表中的两个指针域含义不同。 左指针指向该结点的第一个孩子; 右指针指向该结点的下一个兄弟结点。 nextsibling data firstchild 指向右兄弟 指向左孩子

例如: a a b e c d f h g b c d e f g h

原因:利用二叉树的已有算法解决树的有关问题。 讨论1:树如何转为二叉树? 5.4.2 树和森林与二叉树的转换 原因:利用二叉树的已有算法解决树的有关问题。 讨论1:树如何转为二叉树? 转换步骤: step1: 将树中同一结点的兄弟相连; step2: 保留结点的最左孩子连线,删除其它孩子连线; step3: 将同一孩子的连线绕左孩子旋转45度角。 加线 抹线 旋转

树转二叉树举例: 方法:加线—抹线—旋转 兄弟相连 长兄为父 孩子靠左 a b e i d f h g c a b e i d f h g 根结点肯定没有右孩子! 方法:加线—抹线—旋转 兄弟相连 长兄为父 孩子靠左 a b e i d f h g c a b e i d f h g c

讨论2:二叉树怎样还原为树? 要点:把所有右孩子变为兄弟! a b e i d f h g c a b e i d f h g c

讨论3:森林如何转为二叉树? 即F={T1, T2, …,Tm} B={root, LB, RB} 法一: ① 各森林先各自转为二叉树; ② 依次连到前一个二叉树的右子树上。 法二:森林直接变兄弟,再转为二叉树

森林转二叉树举例:(法二) A 兄弟相连 长兄为父 孩子靠左 头根为根 A B C D E F G H J I A B C D E F G

即B={root, LB, RB} F={T1, T2, …,Tm} 讨论4:二叉树如何还原为森林? 即B={root, LB, RB} F={T1, T2, …,Tm} 要点:把最右边的子树变为森林,其余右子树变为兄弟 G H J I A B C D E F G H J I A B C D E F A B C D E F G H J I

问:树转二叉树的“连线—抹线—旋转” 如何由计算机自动实现? 答:用“左孩子右兄弟”表示法来存储即可。 存储的过程就是转换的过程! 例如: a b e c d f h g a b c d e f g h

练习 1.将此森林转换为相应的二叉树。

练习 2.将此二叉树还原为树

练习 2.设森林F中有三棵树,第一、第二和第三棵树的结点树分别为m1、m2和m3,则与森林F对应的二叉树的根结点的右子树上的结点个数是( )。 ① m1 ② m1+m2 ③ m3 ④ m2+m3 ④ 森林转化为二叉树的规则是首先将森林中的各棵树的根结点看成是兄弟结点,然后再按照树转化为二叉树的规则进行转化。因此,本题中经转化而得到的二叉树的根结点的右子树上结点数等于第二、第三棵树上的结点数之和。

5.4.3 树和森林的遍历 树的遍历 常用方法 先根(序)遍历:先访问树的根结点,然后依次先根遍历根的每棵子树 后根(序)遍历:先依次后根遍历每棵子树,然后访问根结点 按层次遍历:先访问第一层上的结点,然后依次遍历第二层,……第n层的结点

A B E F I G C D E I F G B C D A A B C D E F G I 先根遍历: 后根遍历: 层次遍历: A B

小结 树的存储方式 树和森林与二叉树的转换 树和森林的遍历 ①双亲表示法 ②孩子表示法 ③孩子兄弟表示法 树转二叉树:加线—抹线—旋转 ①双亲表示法 ②孩子表示法 ③孩子兄弟表示法 树和森林与二叉树的转换 树转二叉树:加线—抹线—旋转 二叉树怎样还原为树:把所有右孩子变为兄弟 森林如何转为二叉树 二叉树如何还原为森林 树和森林的遍历 先根(序)遍历、后根(序)遍历、按层次遍历

作业 1.设一棵树的二元组形式表示为{(A,B),(A,C),(A,D),(B,E),(C,F),(C,G)},要求用孩子兄弟表示法表示出该树的存储结构并将该树转化为对应的二叉树。 2. 已知一棵二叉树如图所示,请将该二叉树还原为森林。 A B F C D E G H