软件技术基础树.pptx
《软件技术基础树.pptx》由会员分享,可在线阅读,更多相关《软件技术基础树.pptx(135页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1赌王家族第1页/共135页6.1 树的基本概念树树(Tree)(Tree)是是n(nn(n 0 0)个结点的有限集合个结点的有限集合T T。若若n=0n=0时称为空树,否则:时称为空树,否则:(1)(1)有有且只有一个特殊且只有一个特殊的结点时称为的结点时称为树的根树的根(Root)(Root)结点结点;(2)(2)若若n1n1时,其余的结点被分为时,其余的结点被分为m(m0)m(m0)个个互不相交互不相交的子集的子集T T1 1,T,T2 2,T,T3 3TTmm,其中每个,其中每个子集本身又是一棵树,称其为子集本身又是一棵树,称其为根的子树根的子树(Subtree)(Subtree)。这
2、这是树的递归定义,即用树来定义树是树的递归定义,即用树来定义树,而只有一个结,而只有一个结点的树必定仅由根点的树必定仅由根组成。组成。2第2页/共135页 树的基本术语树的基本术语(1)(1)结点结点(node)(node):包含包含一个数据元素一个数据元素及及若干指向其他结点的分支若干指向其他结点的分支信息信息。(2)(2)结点结点的度的度(degree)(degree)、树的度树的度:结点所拥有的:结点所拥有的子树的棵数子树的棵数称称为为结点的度结点的度。树中。树中结点度的最大值结点度的最大值称为称为树的度树的度。如如图图6-1(b)6-1(b)中结点中结点A A的度是的度是3 3,结点,
3、结点B B的度是的度是2 2,结点,结点MM的度是的度是0 0,树的树的度是度是3 3。A AA AB BD DC CE EGGF FHHI IMMJ JN NKKL L(a)(a)只有根结点只有根结点(b)(b)一般的树一般的树3 3图图6-1 6-1 树的示例形式树的示例形式第3页/共135页(3)(3)叶子叶子(left)(left)结点结点、非叶子非叶子结点结点树树中中度为度为0 0的的结点,即无后继的结点,称为结点,即无后继的结点,称为叶子结点叶子结点(或终端结点或终端结点)。度度不为不为0 0的结点称为的结点称为非叶子结点非叶子结点(或非终端结点或分支结点或非终端结点或分支结点)。
4、除根除根结点外,分支结点又称为内部结点。结点外,分支结点又称为内部结点。如如图中结点图中结点F F、HH、I I、J J、KK、L L、MM、N N是叶子是叶子结点,而所有其它结点都是分支结点。结点,而所有其它结点都是分支结点。4 4A AB BD DC CE EGGF FHHI IMMJ JN NKKL L第4页/共135页5(4)(4)孩子结点、双亲结点、兄弟孩子结点、双亲结点、兄弟结点结点一一个结点的个结点的直接后继直接后继称为该结点的称为该结点的孩子结点孩子结点(child)(child)或子结点或子结点;相应相应地,一个结点的地,一个结点的直接前趋直接前趋称为称为该结点的该结点的双亲
5、结点双亲结点(parent)(parent)或父结点或父结点。同同一双亲结点的所有子结点互称为一双亲结点的所有子结点互称为兄弟结点兄弟结点。如如图中图中结点结点B B、C C、D D是结点是结点A A的子结点,而结点的子结点,而结点A A是结点是结点B B、C C、D D的父结点;的父结点;类似地结点类似地结点E E、F F是结点是结点B B的子结点,结点的子结点,结点B B是结点是结点E E、F F的父结点。的父结点。如图中如图中结点结点B B、C C、D D是兄弟结点;结点是兄弟结点;结点E E、F F是兄弟结点。是兄弟结点。ABDCEGFHIMJNKL第5页/共135页(5 5)层次、堂
6、兄弟结点层次、堂兄弟结点规定规定树中树中根结点的层次为根结点的层次为1 1,其余结点的层次等于其双亲结点的,其余结点的层次等于其双亲结点的层次加层次加1 1。若若某结点在第某结点在第l l(l l 1 1)层,则其子结点在第层,则其子结点在第l l+1+1层。层。双亲双亲结点在同一层上的所有结点互称为结点在同一层上的所有结点互称为堂兄弟结点堂兄弟结点。如图如图6-1(b)6-1(b)中结点中结点E E、F F、GG、HH、I I、J J。(6 6)树的树的深度深度(或高度或高度):树中结点的最大层次值,又称为树的深:树中结点的最大层次值,又称为树的深度,如图度,如图6-1(b)6-1(b)中树
7、的深度为中树的深度为4 4。6 6A AB BD DC CE EGGF FHHI IMMJ JN NKKL L第第1 1层层第第2 2层层第第3 3层层第第4 4层层第6页/共135页(7)结点的(层次)路径、祖先、子孙从从根结点开始,到达某结点根结点开始,到达某结点p p所经过的所有结点成为所经过的所有结点成为结点结点p p的的层次路径层次路径(有且只有一条有且只有一条)。结点结点p p的层次路径上的所有结点(的层次路径上的所有结点(p p除外)称为除外)称为p p的的祖先祖先。以以某一结点为根的子树中的任意结点称为该结点的某一结点为根的子树中的任意结点称为该结点的子孙子孙结结点点。7 7A
8、 AB BD DC CE EGGF FHHI IMMJ JN NKKL L第7页/共135页(8 8)有序)有序树和无序树和无序树树对于对于一棵树,若其中每一个结点的子树(若有)具有一定的次序,则该树称为一棵树,若其中每一个结点的子树(若有)具有一定的次序,则该树称为有序树有序树,否则称为,否则称为无序树无序树。例如例如:若若T1T1,T2T2为有序树,它们是两棵不同的树为有序树,它们是两棵不同的树;若若T1T1,T2T2为无序树,它们是两棵相同的树。为无序树,它们是两棵相同的树。A AC CB BA AB BC C8 8第8页/共135页(9)森林(forest):m(m0)m(m0)棵互不
9、相交的树的集合。棵互不相交的树的集合。显然,若将一棵树的根结点删除,剩余的子树就构成了森林。显然,若将一棵树的根结点删除,剩余的子树就构成了森林。9 9A AB BD DC CE EGGF FHHI IMMJ JN NKKL L第9页/共135页10树的表示形式 倒悬倒悬树树。是最常用的表示形式,如图。是最常用的表示形式,如图6-1(b)6-1(b)。ABDCEGFHIMJNKL图6.1(b)一般的树圆圈表示结点,结圆圈表示结点,结点的名字可写在圆点的名字可写在圆圈内或圆圈旁圈内或圆圈旁。连线表连线表示结点之间示结点之间的关系的关系第10页/共135页11树的表示形式 嵌套嵌套集合集合:是是一
10、些集合的集体,对于任一些集合的集体,对于任何两个集合,何两个集合,或者不相交,或者一个集或者不相交,或者一个集合包含另一个集合合包含另一个集合。右图是。右图是图图6-1(b)6-1(b)树的树的嵌套集合形式嵌套集合形式。嵌套嵌套集合形式集合形式HIJDFBKLECM NGA 圆圈表示结点圆圈表示结点 圆圈的相互包含表示圆圈的相互包含表示结点之间的关系。结点之间的关系。ABDCEGFHIMJNKL图6.1(b)一般的树第11页/共135页12树的表示形式广义表形式(A(B,C,D)(A(B,C,D)(A(B(E,F),C(G),D(H,I,J)(A(B(E,F),C(G),D(H,I,J)(A(
11、B(E(K,L),F),C(G(M,N),D(H,I,J)(A(B(E(K,L),F),C(G(M,N),D(H,I,J)n n括号表示结点括号表示结点n n括号的相互包含表示结点间的关系。括号的相互包含表示结点间的关系。ABDCEGFHIMJNKL图6.1(b)一般的树第12页/共135页13树的表示形式 目录表示目录表示 凹入的线条表示结点凹入的线条表示结点 线条的长短表示结点间的关系,长线条的长短表示结点间的关系,长线条包含短线条。线条包含短线条。ABCDEFKLABDCEGFHIMJNKL图6.1(b)一般的树第13页/共135页1414树的存储结构树的存储结构 顺序存储顺序存储 顺序
12、存储时,首先必须对树形结构的结点进行某种方式的顺序存储时,首先必须对树形结构的结点进行某种方式的线性化线性化,使之成为一,使之成为一个线性序列,然后存储。个线性序列,然后存储。链式存储链式存储 链式存储时,链式存储时,使用多指针域的结点形式使用多指针域的结点形式,每一个指针域指向一棵子树的根结点。,每一个指针域指向一棵子树的根结点。由于由于树的树的分支数不固定分支数不固定,很难给出一种固定的存储结构,通常采用二叉树的形式存,很难给出一种固定的存储结构,通常采用二叉树的形式存储树。储树。第14页/共135页6.2 6.2 二叉树二叉树的定义及其的定义及其性质性质 二叉树的定义二叉树的定义 我们把
13、满足以下两个条件的树形结构叫做二叉树(我们把满足以下两个条件的树形结构叫做二叉树(binary treebinary tree):):(1 1)每个结点的度都)每个结点的度都不大于不大于2 2;(2 2)每个结点的孩子结点次序不能任意颠倒。)每个结点的孩子结点次序不能任意颠倒。由此定义可以看出,一个二叉树中的每个结点只能含有由此定义可以看出,一个二叉树中的每个结点只能含有0 0,1 1或或2 2个孩子,并且每个孩子个孩子,并且每个孩子有左右之分。有左右之分。位于左边的孩子叫做位于左边的孩子叫做左孩子左孩子 位于右边的孩子称为位于右边的孩子称为右孩子右孩子1515第15页/共135页二叉树的基本
14、形态二叉树的基本形态 二叉树有二叉树有5 5种基本形态,如图种基本形态,如图6-36-3所示。所示。A AA AA AA A(a)(a)(b)(b)(c)(c)(d)(d)(e)(e)(a)(a)空二叉树空二叉树(b)(b)单结点二叉树单结点二叉树(c)(c)右子树为空右子树为空(d)(d)左子树为空左子树为空(e)(e)左、右子树都不空左、右子树都不空图图6-3 6-3 二叉树的基本形态二叉树的基本形态1616第16页/共135页17二叉树与一般树型结构的主要区别 树形结构中使用的术语如父母(双亲或前件树形结构中使用的术语如父母(双亲或前件,前趋),前趋)、子女(后件,后继)、祖先、子女(后
15、件,后继)、祖先、子孙、兄弟和路径等在二叉树中仍然可以沿用,但值得注意的是,子孙、兄弟和路径等在二叉树中仍然可以沿用,但值得注意的是,二叉树并非一般树二叉树并非一般树形结构的特殊形式,它们属于两种不同的数据结构。形结构的特殊形式,它们属于两种不同的数据结构。二叉树二叉树与一般树型结构的主要区别在于与一般树型结构的主要区别在于:(1 1)二叉树中每个非空结点最多只有两个子女,而一般的)二叉树中每个非空结点最多只有两个子女,而一般的树形结构树形结构中每个非空结点可中每个非空结点可以有多个以有多个子女;子女;(2 2)二叉树中结点的子树要区分左子树和右子树,即使在结点只有一棵子树的情况下)二叉树中结
16、点的子树要区分左子树和右子树,即使在结点只有一棵子树的情况下也要明确指出是左子树还是右子树。而树则不区分。也要明确指出是左子树还是右子树。而树则不区分。第17页/共135页二叉树与一般树型结构的主要区别 为什么说二叉树不等同于度为为什么说二叉树不等同于度为2 2的有序树?的有序树?答答:如果树的根结点只有一棵子树,那么对有序树而言,它就是一个:如果树的根结点只有一棵子树,那么对有序树而言,它就是一个“独生子独生子”,无次序可分,但,无次序可分,但对对二叉树而言,必须明确区分它是根的左子树还是根的右子树二叉树而言,必须明确区分它是根的左子树还是根的右子树,两种情况将构成不同的二叉树。,两种情况将
17、构成不同的二叉树。18第18页/共135页19 性质性质1 1:在非空二叉树中,第:在非空二叉树中,第i i层上至多有层上至多有2 2i-1i-1个结点个结点(i i11)。证明证明:用数学归纳法证明。:用数学归纳法证明。1.1.当当i=1i=1时时:只有一个根结点,:只有一个根结点,2 21 1-1-1=2=20 0=1=1,命题成立。,命题成立。2.2.现现假设对假设对i1i1时,处在时,处在第第i-1i-1层层上至多有上至多有2 2(i-1)(i-1)-1-1个结点。个结点。3.3.由由归纳假设知,第归纳假设知,第i-1i-1层上至多有层上至多有2 2i-2i-2个结点。由于二叉树每个结
18、点的度最大为个结点。由于二叉树每个结点的度最大为2 2,故在第故在第i i层上最大结点数为第层上最大结点数为第i-1i-1层上最大结点数的层上最大结点数的2 2倍。倍。即即 2222i-2i-22 2i-1i-1 证证毕毕二叉树的性质第19页/共135页20二叉树的性质 性质性质2 2:深度为:深度为k k的二叉树至多有的二叉树至多有2 2k k-1-1个结点(个结点(k1k1)。证明证明:深度为:深度为k k的二叉树的最大的结点数为二叉树中每层上的最大结点数之和。的二叉树的最大的结点数为二叉树中每层上的最大结点数之和。由性质由性质1 1知知,二叉树的第,二叉树的第1 1层、第层、第2 2层层
19、 第第k k层上的结点数至多有:层上的结点数至多有:2 20 0、2 21 1 22k-1 k-1。总的结点数至多有:总的结点数至多有:2 20 0+2+21 1+2 2k-1k-1=2=2k k-1 -1 证毕证毕第20页/共135页21二叉树的性质性质3:对任何一棵二叉树,若其叶子结点数为n0,度为2的结点数为n2,则n0=n2+1。证明:证明:设二叉树中度为设二叉树中度为1 1的结点数为的结点数为n n1 1,二叉树中总结点数为,二叉树中总结点数为N N,因为二叉树中所有,因为二叉树中所有结点均小于或等于结点均小于或等于2 2,则有,则有:N=nN=n0 0+n+n1 1+n+n2 2设
20、设B B为二叉树中的分支总数为二叉树中的分支总数,除根结点外,其余每个结点都有唯一的一个进入分支除根结点外,其余每个结点都有唯一的一个进入分支,则则有:有:N=B+1N=B+1。二叉树二叉树中的中的分支都是分支都是由度为由度为1 1和和2 2的的结点发出结点发出,所以分支数目为:,所以分支数目为:B Bn n1 1+2+2 n n2 2 整理可得:整理可得:N=B+1=nN=B+1=n1 1+2+2 n n2 2+1+1 n n0 0+n+n1 1+n+n2 2=n=n1 1+2+2 n n2 2+1+1 即即 n n0 0=n=n2 2+1 +1 证证毕毕 第21页/共135页满二叉树 满二
21、叉树满二叉树一一棵深度为棵深度为k k且有且有2 2k k-1-1个结点的二叉树称为满二叉个结点的二叉树称为满二叉树树(Full Binary Tree)(Full Binary Tree)。如如图图6-4(a)6-4(a)就是一棵深度为就是一棵深度为4 4的满二叉树的满二叉树。22894101151213614157213图6-4(a)满二叉树第22页/共135页2323满二叉树 满满二叉树的特点二叉树的特点:基本基本特点是每一层上的结点数总是最大结点数。特点是每一层上的结点数总是最大结点数。满满二叉树的所有二叉树的所有的分支的分支结点都有左、右子树。结点都有左、右子树。可可对满二叉树的结点
22、进行连续编号,若规定从根结点开始,按对满二叉树的结点进行连续编号,若规定从根结点开始,按“自上而下、自自上而下、自左至右左至右”的原则进行的原则进行。图图6-4(a)6-4(a)中满二叉树的顺序表示为(中满二叉树的顺序表示为(1,2,3,4,5,6,7,1,2,3,4,5,6,7,14,1514,15)图图6-4(a6-4(a)满满二叉树二叉树8 89 94 4101011115 5121213136 6141415157 72 21 13 3第23页/共135页24完全二叉树 完全二叉树完全二叉树(Complete Binary Tree)(Complete Binary Tree):如果如
23、果深度为深度为k k,由,由n n个结点的二叉树,个结点的二叉树,当且仅当其每一个当且仅当其每一个结点都与深度为结点都与深度为k k的满二叉树中编号从的满二叉树中编号从1 1到到n n的结点一一对的结点一一对应应,该二叉树称为完全二叉树。,该二叉树称为完全二叉树。或或深度为深度为k k的满二叉树中编号从的满二叉树中编号从1 1到到n n的前的前n n个结点构成了个结点构成了一棵深度为一棵深度为k k的完全的完全二叉树二叉树,其中其中 2 2k-1k-1 n2n2k k-1-1。完全完全二叉树是满二叉树的一部分,而满二叉树是完全二二叉树是满二叉树的一部分,而满二叉树是完全二叉树的特例叉树的特例。
24、894115211267310136245完全二叉树非完全二叉树5674213第24页/共135页25二叉树的性质 性质性质4 4:具有具有n n个结点的完全个结点的完全二叉树的深度二叉树的深度为为:2 2n n +1 1。其中 x 表示不大于x的最大整数,x 表示不小于x的最小整数。证明证明:假设假设n n个结点的完全个结点的完全二叉树的深度为二叉树的深度为k k 则则根据性质根据性质2 2,k-1k-1层满二叉树结点总数为:层满二叉树结点总数为:n n1 1=2=2k-1k-1-1-1;k k层层满二叉树结点总数为满二叉树结点总数为:n n2 2=2=2k k-1-1;显然显然n n1 1
25、nnnn2 2,进一步进一步n n1 1+1+1 nnnn2 2+1+1,即,即2 2 k-1k-1 n2n2k k 取取对数得:对数得:k-1k-1 2 2n nk 1i1,则序号为,则序号为i i的的结点的双亲结点序号结点的双亲结点序号是是 i/2i/2 。若若2i n2i n,则序号为,则序号为i i的结点无左孩子;的结点无左孩子;若若2in2in,则序号为,则序号为i i的结点的左孩子的序号为的结点的左孩子的序号为2i2i。若若2i+1n2i+1n,则序号为,则序号为i i的结点的结点无无右右孩子孩子;若若2i+1n2i+1n,则,则序号为序号为i i的结点的结点的右孩子的右孩子的序号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件技术 基础
限制150内