数据结构(第6章-树和二叉树)-PPT.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构(第6章-树和二叉树)-PPT.ppt》由会员分享,可在线阅读,更多相关《数据结构(第6章-树和二叉树)-PPT.ppt(102页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构数据结构(第第6章章 树和二叉树树和二叉树)6.1 树的定义和基本术语树的定义和基本术语v 什么是树?树是由什么是树?树是由 n(n 0)个结点的有限集合。如果个结点的有限集合。如果 n=0,称为空树;如果,称为空树;如果 n 0,则,则 有且仅有一个特定的称之为根有且仅有一个特定的称之为根(Root)的结点,它只有直的结点,它只有直接后继,但没有直接前驱;接后继,但没有直接前驱;当当n 1,除根以外的其它结点划分为,除根以外的其它结点划分为 m(m 0)个互不个互不相交的有限集相交的有限集 T1,T2,Tm,其中每个集合本身又是一,其中每个集合本身又是一棵树,并且称为根的子树棵树,并
2、且称为根的子树(SubTree)。T=A,B,C,D,E,F,G,H,I,J,K,L,MA是根,其余结点可以划分为是根,其余结点可以划分为3个互不相交的集合:个互不相交的集合:T1=B,E,F,K,L T2=C,G T3=D,H,I,J,M 这些集合中的每一集合都本身又是一棵树,它们是这些集合中的每一集合都本身又是一棵树,它们是A的子树。的子树。对于对于T1,B是根,其余结点可以划分为是根,其余结点可以划分为2个互不相交的集合:个互不相交的集合:T11=E,K,L T12=F T11,T12是是B的子树。的子树。HBAJFEDKLCMIGq 树的示例树的示例1.树中只有根结点没有前趋;树中只有
3、根结点没有前趋;2.除根外,其余结点都有且仅一个前趋;除根外,其余结点都有且仅一个前趋;3.树的结点,可以有零个或多个后继;树的结点,可以有零个或多个后继;4.除根外的其它结点,都存在唯一条从除根外的其它结点,都存在唯一条从根到该结点的路径;根到该结点的路径;5.树是一种分支结构。树是一种分支结构。HBAJFEDKLCMIGq 树的逻辑结构特点树的逻辑结构特点 树可表示具有分支结构关系的对象树可表示具有分支结构关系的对象例例1.家族族谱家族族谱 设某家庭有设某家庭有13个成员个成员A、B、C、D、E、F、G、H、I、J、K、L、M,他们之间的关系可如图所示的树表示。,他们之间的关系可如图所示的
4、树表示。例例2.单位行政机构的组织关系单位行政机构的组织关系HBAJFEDKLCMIGq 树的应用树的应用 树是常用的数据组织形式树是常用的数据组织形式 有些应用中数据元素之间并不存在分支结构关系,但是为有些应用中数据元素之间并不存在分支结构关系,但是为了便于管理和使用数据,将它们用树的形式来组织。了便于管理和使用数据,将它们用树的形式来组织。例例3.计算机的文件系统计算机的文件系统 不论是不论是DOS文件系统还是文件系统还是window文件系统,所有的文件文件系统,所有的文件是用树的形式来组织的。是用树的形式来组织的。文件夹文件夹1文件夹文件夹2文件文件1文件文件2文件夹文件夹11 文件夹文
5、件夹11 文件文件11文件文件12Cq 树的应用树的应用树的结点:包含一个数据元素的树的结点:包含一个数据元素的内容及若干指向子树的分支。内容及若干指向子树的分支。孩子结点:结点的子树的根称为孩子结点:结点的子树的根称为该结点的孩子;如该结点的孩子;如E是是B的孩子。的孩子。双亲结点:双亲结点:B结点是结点是A结点的孩子,结点的孩子,则则A结点是结点是B结点的双亲;如结点的双亲;如B是是E的双亲。的双亲。兄弟结点:同一双亲的孩子结点;如兄弟结点:同一双亲的孩子结点;如H、I、J互为兄弟。互为兄弟。堂兄结点:同一层上结点;如堂兄结点:同一层上结点;如G与与E、F、H、I、J互为堂兄。互为堂兄。祖
6、先结点:结点的祖先是从根到该结点所经分支上的所有结点;祖先结点:结点的祖先是从根到该结点所经分支上的所有结点;如如H的祖先为的祖先为A、D。子孙结点:以某结点为根的子树中的任一结点称为该结点的子孙;子孙结点:以某结点为根的子树中的任一结点称为该结点的子孙;如如A的子孙为的子孙为B、C、D、E、F、G、H、I、J、K、L、M。HBAJFEDKLCMIGq 基本术语基本术语大家应该也有点累了,稍作休息大家应该也有点累了,稍作休息大家有疑问的,可以询问和交流大家有疑问的,可以询问和交流大家有疑问的,可以询问和交流大家有疑问的,可以询问和交流结点的度:结点子树的个数;结点的度:结点子树的个数;如如D的
7、度为的度为3。叶子结点:也叫终端结点,是叶子结点:也叫终端结点,是度为度为0的结点;如的结点;如K、L、F、G、M、I、J。分支结点:度不为分支结点:度不为0的结点;如的结点;如A、B、C、D结点层次:根结点的层定义为结点层次:根结点的层定义为1,根的孩子为第二层结点,依此,根的孩子为第二层结点,依此类推。类推。树的高度:树中结点的最大层次;如图所示树的高度为树的高度:树中结点的最大层次;如图所示树的高度为4。树的度:树的度:树中各结点的度的最大值;如图所示树的度为树中各结点的度的最大值;如图所示树的度为3。森林:森林:m(m=0)棵互不相交的树的集合;棵互不相交的树的集合;HBAJFEDKL
8、CMIGq 基本术语基本术语v 线性结构线性结构 第一个数据元素第一个数据元素(无前驱);(无前驱);最后一个数据元素(无后继);最后一个数据元素(无后继);其它数据元素(一个前驱、一个后继)。其它数据元素(一个前驱、一个后继)。v 树型结构树型结构 根结点(无前驱);根结点(无前驱);多个叶子结点多个叶子结点(无后继);(无后继);其它数据元素(一个前驱、多个后继)。其它数据元素(一个前驱、多个后继)。q 树型结构和线性结构的结构特点对比树型结构和线性结构的结构特点对比6.2.1 二叉树的定义二叉树的定义 l 或为空树,或由根及至多两棵互不相交的左子树、右子或为空树,或由根及至多两棵互不相交
9、的左子树、右子树构成树构成(即不存在度大于即不存在度大于2的结点的结点),并且左、右子树本身也,并且左、右子树本身也是二叉树。是二叉树。说明:说明:1.二叉树中每个结点最多有两棵子二叉树中每个结点最多有两棵子树,二叉树每个结点度小于等于树,二叉树每个结点度小于等于2;2.左、右子树不能颠倒左、右子树不能颠倒有序树;有序树;3.二叉树是递归结构,在二叉树的定二叉树是递归结构,在二叉树的定义中又用到了二叉树的概念。义中又用到了二叉树的概念。BADCFEG6.2 二叉树二叉树 (a)(b)(c)(d)(e)(a)空树空树 (b)只含根结点只含根结点 (c)右子右子树为空树树为空树 (d)左右子树均不
10、为空树左右子树均不为空树 (e)左子树左子树为空树为空树LLRRq 二叉树的形态二叉树的形态性质性质1 在二叉树的第在二叉树的第 i 层上至多有层上至多有 2i-1个结点。个结点。(i 1)证明用归纳法证明用归纳法证明:当证明:当i=1时,只有根结点,时,只有根结点,2 i-1=2 0=1。假设对所有假设对所有j,1ji,命题成立,即第,命题成立,即第j层上至多有层上至多有2 j-1 个个结点。结点。由归纳假设第由归纳假设第i-1 层上至多有层上至多有 2i-2个结点。个结点。由于二叉树的每个结点的度至多为由于二叉树的每个结点的度至多为2,故在第,故在第i层上的最大结层上的最大结点数为第点数为
11、第i-1层上的最大结点数的层上的最大结点数的2倍,即倍,即22i-2=2 i-1。6.2.2 二叉树的性质二叉树的性质性质性质2 深度为深度为 k 的二叉树至多有的二叉树至多有 2 k-1个结点个结点(k 1)。证明:由性质证明:由性质1可见,深度为可见,深度为k的二叉树的最大结点数为的二叉树的最大结点数为 20+21+2 k-1=2 k-16.2.2 二叉树的性质二叉树的性质性质性质3 对任何一棵二叉树对任何一棵二叉树T,如果其叶结点数为,如果其叶结点数为 n0,度为,度为2的结点数为的结点数为 n2,则,则n0n21。证明:设二叉树中度为证明:设二叉树中度为1的结点数为的结点数为n1,二叉
12、树中总结点数,二叉树中总结点数为:为:nn0n1n2 二叉树中的分支数,除根结点外,其余结点都有一个二叉树中的分支数,除根结点外,其余结点都有一个进入分支,设进入分支,设B为二叉树中的分支总数,为二叉树中的分支总数,则有:则有:nB1。由于这些分支都是由度为由于这些分支都是由度为1和和2的结点射出的,所以有:的结点射出的,所以有:Bn1+2 n2 ;nB1n12n21得到:得到:n0n216.2.2 二叉树的性质二叉树的性质满二叉树:深度为满二叉树:深度为k的二叉树,有的二叉树,有2k-1个结点则称为满二叉个结点则称为满二叉树;树;完全二叉树:如果深度为完全二叉树:如果深度为k、由、由n个结点
13、的二叉树中个结点个结点的二叉树中个结点能够与深度为能够与深度为k的顺序编号的满二叉树从的顺序编号的满二叉树从1到到n标号的结点相标号的结点相对应,则称为完全二叉树。对应,则称为完全二叉树。完全二叉树的特点是:完全二叉树的特点是:1.所有的叶结点都出现在第所有的叶结点都出现在第k层或层或k1层。层。2.对任一结点,如果其右子树的最大层次为对任一结点,如果其右子树的最大层次为l,则其左子,则其左子树的最大层次为树的最大层次为 l 或或 l 1。q 两种特殊的二叉树两种特殊的二叉树62175438910 1113 14 1512621754389 1011 122154367216543非完全二叉树
14、非完全二叉树完全二叉树完全二叉树满满二二叉叉树树q 两种特殊的二叉树两种特殊的二叉树性质性质 4:具有:具有 n 个结点的完全二叉树的深度为个结点的完全二叉树的深度为 log2n +1。证明:设完全二叉树的深度为证明:设完全二叉树的深度为 k,则根据性质,则根据性质2和完全二叉和完全二叉树的定义有树的定义有2k-1-1 n 2k-1或或 2k-1 n 2k取对数取对数 k-1 1,则其双亲是结点则其双亲是结点 i/2 。2.如果如果2in,则结点,则结点i为叶子结点,无左孩子;否则,其为叶子结点,无左孩子;否则,其左孩子是结点左孩子是结点2i。3.如果如果2i1n,则结点,则结点i无右孩子;否
15、则,其右孩子是结无右孩子;否则,其右孩子是结点点2i1。6.2.2 二叉树的性质二叉树的性质证明:此性质可采用数学归纳法证明。因为证明:此性质可采用数学归纳法证明。因为1与与2、3是相对应的,是相对应的,所以只需证明所以只需证明2和和3。当当 i=1时时,根据结点编号方法可知,根的左、右孩子编号分,根据结点编号方法可知,根的左、右孩子编号分别是别是2和和3,结论成立。,结论成立。假定假定i-1时结论成立,即结点时结论成立,即结点i-1的左右孩的左右孩子编号满足:子编号满足:LCHILD(i-1)=2(i-1);RCHILD(i-1)=2(i-1)+1 通过完全二叉树可知,结点通过完全二叉树可知
16、,结点 i 或者与结点或者与结点i-1同层且紧靠其右,同层且紧靠其右,或者结点或者结点i-1在某层最右端,而结点在某层最右端,而结点i在其下一层最左端。但是,无在其下一层最左端。但是,无论如何,结点论如何,结点i的左孩子的编号都是紧接着结点的左孩子的编号都是紧接着结点i-1的右孩子的编号,的右孩子的编号,故:故:LCHILD(i)=RCHILD(i-1)+1=2i;RCHILD(i)=LCHILD(i)+1=2i+1命题成立。命题成立。6.2.2 二叉树的性质二叉树的性质分析:根据完全二叉树的结构和编号规则,在分析:根据完全二叉树的结构和编号规则,在i的左孩子前面的的左孩子前面的两个结点是结点
17、两个结点是结点i-1的左、右孩子,由归纳假设有:结点的左、右孩子,由归纳假设有:结点i-1的左的左孩子为孩子为2(i-1),右孩子为,右孩子为2(i-1)+1。.i与与i+1同层同层.i-12(i-1)2(i-1)+1i2i2i+1.i与与i+1不同层不同层6.2.2 二叉树的性质二叉树的性质i2i2i+1i-12i-22i-1最后证明结论最后证明结论1。当当i=1时,显然根结点无双亲;当时,显然根结点无双亲;当i1时,结点时,结点i可能是可能是其双亲其双亲x的左孩子,也可能是右孩子,若是左孩子,由结论的左孩子,也可能是右孩子,若是左孩子,由结论2知,知,x的左孩子应为的左孩子应为2x,即,即
18、2x=i,x=i/2;若是右孩子,由;若是右孩子,由结论结论3知,知,x的右孩子应为的右孩子应为2x+1,即,即2x+1=i,x=(i-1)/2。故故 i的双亲为的双亲为i/2 证毕。证毕。6.2.2 二叉树的性质二叉树的性质v 顺序存储结构顺序存储结构l 所谓顺序存储结构,就是用一组连续的存储单元存储二所谓顺序存储结构,就是用一组连续的存储单元存储二叉树的数据元素,结点在这个序列中的相互位置能反映出叉树的数据元素,结点在这个序列中的相互位置能反映出结点之间的逻辑关系。结点之间的逻辑关系。二叉树中结点之间的关系就是双亲二叉树中结点之间的关系就是双亲结点与左右孩子结点间的关系。因此,必须把二叉树
19、的所结点与左右孩子结点间的关系。因此,必须把二叉树的所有结点安排成为一个恰当的序列。具体定义如下:有结点安排成为一个恰当的序列。具体定义如下:#define MAX-TREE-SIZE 100 TElemType SqBiTreeMAX-TREE-SIZE;6.2.3 二叉树的存储结构二叉树的存储结构l 通常是按照二叉树结点从上至下、从左到右的顺序存储,通常是按照二叉树结点从上至下、从左到右的顺序存储,但这样结点在存储位置上的前驱后继关系并不一定就是它们但这样结点在存储位置上的前驱后继关系并不一定就是它们在逻辑上的邻接关系。依据二叉树的性质,完全二叉树和满在逻辑上的邻接关系。依据二叉树的性质,
20、完全二叉树和满二叉树采用顺序存储比较合适,树中结点的序号可以唯一地二叉树采用顺序存储比较合适,树中结点的序号可以唯一地反映出结点之间的逻辑关系,这样既能够最大可能地节省存反映出结点之间的逻辑关系,这样既能够最大可能地节省存储空间,又可以利用数组元素的下标值确定结点在二叉树中储空间,又可以利用数组元素的下标值确定结点在二叉树中的位置,以及结点之间的关系。的位置,以及结点之间的关系。q 二叉树的顺序存储结构二叉树的顺序存储结构FBAGEDCHIJKL例如:例如:bt3的双亲为的双亲为3/2=1,即在,即在bt1中;中;其左孩子在其左孩子在bt2i=bt6中;中;其右孩子在其右孩子在bt2i+1=b
21、t7中。中。如何反映结点之如何反映结点之间的逻辑关系?间的逻辑关系?A1B2C3D4E5F6G7H8I9J10K11L12q 完全二叉树的顺序表示完全二叉树的顺序表示l 一般二叉树也按完全二叉树形式存储,只有增添一些并不存在一般二叉树也按完全二叉树形式存储,只有增添一些并不存在的空结点的空结点(用用表示,表示,表示该处没有元素存在,仅仅为了好理解表示该处没有元素存在,仅仅为了好理解),使之成为一棵完全二叉树的形式,然后再用一维数组顺序存,使之成为一棵完全二叉树的形式,然后再用一维数组顺序存储。储。A1B2C3D45E6F7G8H910111213I14J15EBAFDCGHIJ例如对于例如对于
22、B结点而言:结点而言:bt2的双亲为的双亲为1/2=1,即在,即在bt1中中(为为A);其左孩子在其左孩子在bt2i=bt4中中(为为D);其右孩子在其右孩子在bt2i+1=bt5中中(为为)。q 一般二叉树的顺序表示一般二叉树的顺序表示l 这种存储结构适合于完全二叉树,既不浪费存储空间,这种存储结构适合于完全二叉树,既不浪费存储空间,又能很快确定结点的存放位置、以及结点的双亲和左右孩又能很快确定结点的存放位置、以及结点的双亲和左右孩子的存放位置,但对一般二叉树,可能造成存储空间的浪子的存放位置,但对一般二叉树,可能造成存储空间的浪费。费。例如,深度为例如,深度为k,且只有,且只有k个结个结点
23、的右单支树点的右单支树(每个非叶结点只每个非叶结点只有右孩子有右孩子),也需,也需2k-1个单元,个单元,即有即有(2k-1)-k个单元被浪费。个单元被浪费。12kq 顺序存储的优缺点顺序存储的优缺点v 所谓链式存储是指,用链表来表示一棵二叉树,即用链所谓链式存储是指,用链表来表示一棵二叉树,即用链来指示着元素的逻辑关系。通常采用二叉链表来存储。来指示着元素的逻辑关系。通常采用二叉链表来存储。链表中每个结点由三个域组成,除了数据域外,还有链表中每个结点由三个域组成,除了数据域外,还有两个指针域,分别用来给出该结点左右孩子所在的结点的两个指针域,分别用来给出该结点左右孩子所在的结点的存储地址。其
24、定义如下:存储地址。其定义如下:typedef struct BiTNode TElemType data;struct BiTNode*lchild,*rchild;BiTNode,*BiTree;q 链式存储结构链式存储结构 D A B C E F Tlchilddatarchild结点结构结点结构BADCEFq 二叉链表二叉链表 A B C D E F G三叉链表图示三叉链表图示BACDEFGq 三叉链表三叉链表lchild data结点结构结点结构parent rchild6.3 遍历二叉树和线索二叉树遍历二叉树和线索二叉树6.3.1 遍历二叉树遍历二叉树v定义:所谓遍历二叉树,就是遵
25、从某种次序,访问二叉树定义:所谓遍历二叉树,就是遵从某种次序,访问二叉树中的所有结点,使得每个结点仅被访问一次。中的所有结点,使得每个结点仅被访问一次。这里所提的这里所提的“访问访问”的含义很广,可以是查询、修改、的含义很广,可以是查询、修改、输出某元素的值,以及对元素作某种运算等等。但要求这输出某元素的值,以及对元素作某种运算等等。但要求这种访问不破坏它原来的数据结构。遍历一个线性结构很简种访问不破坏它原来的数据结构。遍历一个线性结构很简单,只须从开始结点出发,顺序扫描每个结点即可。但对单,只须从开始结点出发,顺序扫描每个结点即可。但对二叉树这样的非线性结构,每个结点可能有两个后继结点,二叉
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 二叉 PPT
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内