文档详情

数据结构-树与二叉树讲解.ppt

发布:2017-04-16约1.11万字共93页下载文档
文本预览下载声明
本章主要内容: 1.二叉树的定义、性质和存储结构。 2.二叉树的遍历和线索化以及遍历算法的各种描述形式。 3.树和森林的定义、存储结构与二叉树的转换、遍历。 4.树的应用。 本章学习重点: 1.掌握二叉树的存储结构及其各种操作。 2.掌握树和森林与二叉树的转换关系。; 第六章???树和二叉树; 第六章???树和二叉树; 6.1 树的定义和基本术语;一、树的定义;一、树的定义;一、树的定义;3.树型结构的例子 (1)家族的血缘关系 ;(2)计算机磁盘目录 ;1.图形表示法:以图1中的树为例。;2.形式化表示 对于一个T的形式化表示为: T=(D,R) D为T中结点的集合;R为T中结点之间关系的集合。 以上图为例。 D={A,B,C,D,E,F,G,H,I,J,K,L,M} R={A,B,A,C,A,D,B,E,B,F,C,G,D,H,D,I,D,J,E,K,E,L,H,M} ;1.结点:包含一个数据元素及若干指向其子树的分支。 图1所示的树有13个结点。 2.结点的度(degree):结点拥有的子树数。A结点的度为3。 3.叶子或终端结点(leaf):度为0的结点。K,L,F,G,M,I,J皆为叶子。 4.分支结点或非终端结点:度不为0的结点。 5.树的度:树内各结点的度的最大值。图1所示的树的度为3。 6.双亲结点(parent):结点的前驱结点。A是B,C,D的双亲。 ;三、基本术语;13.树的深度(depth)或高度:树中结点的最大层次。上图所示树的深度为4。 14.有序树和无序树:树中结点的各子树从左至右排列,不可对换,称这种树为有序树,且把各子树分别称为第一子树,第二子树,最左边的子树为第一孩子,最右边子树为最后一个孩子。否则称为无序树。 15.森林(forest):是m(m≥0)棵互不相交的树的集合。对树中每个结点而言,其子树的集合即为森林。如图,若删除A,就得到三棵子树构成的森林。 ; 可以用森林和树相互递归的定义来描述树。 树的逻辑结构采用二元组形式: T=(root,F) root:根结点,数据元素 F:m棵数的森林,F=(T1,T2,…,Tm) Ti=(ri,Fi)是第i棵子树 树根和子树之间的关系:RF={root,ri |i=1,2,…,m,m0 };;一、二叉树的定义;1.抽象数据类型二叉树的定义 ADT BinaryTree{ 数据对象D:D是具有相同特性的数据元素的集合。 数据关系R: 若D=Φ,则R=Φ,称BinaryTree为空二叉树; 若D?Φ,则R={H},H是如下二元关系集: (1)在D中存在唯一的称为根的数据元素root,它在关系H下无前驱; (2)若D-{root}?Φ,则存在D-{root}={Dl,Dr},且Dl∩Dr=Φ; ; (3)若Dl?Φ,则Dl中存在唯一的元素xl, root,xl?H,且存在Dl上的关系H1?H;若Dr?Φ,则Dr中存在唯一的元素xr,root,xr?H,且存在Dr 上的关系Hr?H;H={root,xl,root,xr,Hl,Hr}; (4)(Dl,{Hl})是一棵符合本定义的二叉树,称为根的左子树,(Dr,{Hr})是一棵符合本定义的二叉树,称为根的右子树。 基本操作P: 略。 }ADT BinaryTree ;4.二叉树的五种基本形态 ;5. 特殊的二叉树 (1)满二叉树 如果二叉树的叶子结点都在同一层,且其它各层的结点都包含左、右子树,则称该二叉树为满二叉树。;(2)完全二叉树 如果一棵深度为k的有i(1≤i≤n)个结点的二叉树,对树中的结点自上而下、自左而右连续编号,若编号为i的结点与满二叉树中编号为i的结点的位置相同,则称此二叉树为完全二叉树。;性质1 在二叉树的第i(i≥1)层上至多有2i-1个结点。 用数学归纳法就可以证明。 满二叉树的第i层上共有2i-1个结点。 深度为k的完全二叉树,除了第k层外,其余各层也均 有2i-1个结点(1≤Ik)。 性质2 深度为k的二叉树最多有2k-1个结点。 证明:最多结点数为各层结点个数相加,即 1+2+4+…+2k-1=2k-1 ;性质3 对任意二叉树T,如果其终端结点数为n0(度数为0的结 点数), n1,n2分别表示度数为1,2的结点个数,则n0=n2+1。 证明:设n为二叉树T的结点总数,则有: n=n0+n1+n2 设除根结点外的结点数为B,则B=n-1。又B= n1+2*n2 所以,n-1= n1+2*n2 n0+n1+n2= n1+2*n2+1 求得
显示全部
相似文档