您好,欢迎访问三七文档
第6章树和二叉树数据结构讲义—树的定义和性质信息工程学院魏洪涛Email:greattide@163.com6.1树的定义树是一类重要的非线性数据结构,是以分支关系定义的层次结构。定义–定义:树(tree)是n(n0)个结点的有限集T,其中:有且仅有一个特定的结点,称为树的根(root)当n1时,其余结点可分为m(m0)个互不相交的有限集T1,T2,……Tm,其中每一个集合本身又是一棵树,称为根的子树(subtree)–特点:树中至少有一个结点——根树中各子树是互不相交的集合非递归定义:树结构是二元组(D,R).其中D是n个数据元素的有穷集合(n≥0)(数据元素称为结点),R是D上的一个关系。n=0时称为空树;n0时它满足以下条件:(1)有且仅有一个结点d0∈D,满足不存在任何d∈D,使d,d0∈R。称其为树的根。(2)除根结点d0外,D上每个结点d(若有的话),总存在一个唯一的结点d’∈D,d≠d’,使得d’,d∈R.A只有根结点的树ABCDEFGHIJKLM有子树的树根子树基本术语–结点(node)——表示树中的元素,包括数据项及若干指向其子树的分支–结点的度(degree)——结点拥有的子树数–叶子(leaf)——度为0的结点–孩子(child)——结点子树的根称为该结点的孩子–双亲(parents)——孩子结点的上层结点叫该结点的~–兄弟(sibling)——同一双亲的孩子–树的度——一棵树中最大的结点度数–结点的层次(level)——从根结点算起,根为第一层,它的孩子为第二层……–深度(depth)——树中结点的最大层次数–森林(forest)——m(m0)棵互不相交的树的集合ABCDEFGHIJKLM结点A的度:3结点B的度:2结点M的度:0叶子:K,L,F,G,M,I,J结点A的孩子:B,C,D结点B的孩子:E,F结点I的双亲:D结点L的双亲:E结点B,C,D为兄弟结点K,L为兄弟树的度:3结点A的层次:1结点M的层次:4树的深度:4结点F,G为堂兄弟结点A是结点F,G的祖先bacghdefij树的表示树形表示图形表示法:教师学生其他人员99级2000级2001级2002级……武汉理工大学计算机学院信息学院自动化学院……叶子根子树凹入表表示abdeijfcgh嵌套集合表示嵌套括号表示ijdfghabcea(b(d,e(i,j),c(g,h)))6.2二叉树定义–定义:二叉树是n(n0)个结点的有限集,它或为空树(n=0),或由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树构成。–特点每个结点至多有二棵子树(即不存在度大于2的结点)二叉树的子树有左、右之分,且其次序不能任意颠倒–基本形态A只有根结点的二叉树空二叉树AB右子树为空AB左子树为空ABC左、右子树均非空二叉树性质–性质1:)1(21iii个结点层上至多有在二叉树的第证明:用归纳法证明之i=1时,只有一个根结点,是对的假设对所有j(1ji)命题成立,即第j层上至多有个结点那么,第i-1层至多有个结点又二叉树每个结点的度至多为2第i层上最大结点数是第i-1层的2倍,即故命题得证12201i12j22i12222ii–性质2:深度为k的二叉树至多有个结点(k1)12k证明:由性质1,可得深度为k的二叉树最大结点数是122)(111kkikiii层的最大结点数第–性质3:对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1证明:n1为二叉树T中度为1的结点数。因为:二叉树中所有结点的度均小于或等于2。所以:其结点总数n=n0+n1+n2。又二叉树中,除根结点外,其余结点都只有一个分支进入。设B为分支总数,则n=B+1。又:分支由度为1和度为2的结点射出,B=n1+2*n2于是,n=B+1=n1+2n2+1=n0+n1+n2n0=n2+1几种特殊形式的二叉树–满二叉树定义:一棵深度为k且有2k-1个结点的二叉树成为~特点:每一层上的结点数都是最大结点数–完全二叉树定义:深度为k,有n个结点的二叉树当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称为~特点–叶子结点只可能在层次最大的两层上出现–对任一结点,若其右分支下子孙的最大层次为L,则其左分支下子孙的最大层次必为L或L+1对任意一棵满二叉树,从它的最后一层的最右结点起,按从下到上、从右到左的次序,去掉若干个结点后所成的树即为完全二叉树。左分支层数大于或等于右分支层数.1231145891213671014151231145891267101234567123456性质–性质4:–性质5:如果对一棵有n个结点的完全二叉树的结点按层序编号,则对任一结点i(1in),有:如果i=1,则结点i是二叉树的根,无双亲;如果i1,则其双亲是i/2如果2in,则结点i无左孩子;如果2in,则其左孩子是2i如果2i+1n,则结点i无右孩子;如果2i+1n,则其右孩子是2i+11log2nn深度为个结点的完全二叉树的具有二叉树的存储结构–顺序存储结构实现:按满二叉树的结点层次编号,依次存放二叉树中的数据元素特点:–结点间关系蕴含在其存储位置中–浪费空间,适于存满二叉树和完全二叉树abcdefgabcde0000fg1234567891011链式存储结构–二叉链表typedefstructnode{datatypedata;structnode*lchild,*rchild;}JD;lchilddatarchildABCDEFG在n个结点的二叉链表中,有n+1个空指针域ABCDEFG^^^^^^^^空指针个数:2*n0+1*n1+0*n2=2n0+n1=n0+n1+n0=n0+n1+n2+1=n+1三叉链表typedefstructnode{datatypedata;structnode*lchild,*rchild,*parent;}JD;lchilddataparentrchildABCDEFGABCDEFG^^^^^^^^^作业一、下面是有关二叉树的叙述,请判断正误。()1.若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。()2.二叉树中每个结点的两棵子树的高度差等于1。()3.二叉树中每个结点的两棵子树是有序的。()4.二叉树中每个结点有两棵非空子树或有两棵空子树。()5.二叉树中每个结点的关键字值大于其左非空子树(若存在的话)所有结点的关键字值,且小于其右非空子树(若存在的话)所有结点的关键字值。()6.二叉树中所有结点个数是2k-1-1,其中k是树的深度。()7.二叉树中所有结点,如果不存在非空左子树,则不存在非空右子树。()8.对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i-1个结点。()9.用二叉链表法(link-rlink)存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。()10.具有12个结点的完全二叉树有5个度为2的结点。二、填空。1.由3个结点所构成的二叉树有种形态。2.一棵深度为6的满二叉树有个分支结点和个叶子。3.一棵具有257个结点的完全二叉树,它的深度为。4.设一棵完全二叉树有700个结点,则共有个叶子结点。5.设一棵完全二叉树具有1000个结点,则此完全二叉树有个叶子结点,有个度为2的结点,有个结点只有非空左子树,有个结点只有非空右子树。6.【严题集6.7③】一棵含有n个结点的k叉树,可能达到的最大深度为,最小深度为。
本文标题:武汉理工大学-信息工程学院-数据结构-ppt-课件ch06-1-树和二叉树1-树的定义和性质
链接地址:https://www.777doc.com/doc-7231953 .html