《树和二叉树1-树的定义和性质.ppt》由会员分享,可在线阅读,更多相关《树和二叉树1-树的定义和性质.ppt(20页珍藏版)》请在三一办公上搜索。
1、数据结构讲义第6章 树和二叉树,黄可坤嘉应学院,树的定义和性质,1 树的定义,树是一类重要的非线性数据结构,是以分支关系定义的层次结构。定义定义:树(tree)是n(n0)个结点的有限集T,其中:有且仅有一个特定的结点,称为树的根(root)当n1时,其余结点可分为m(m0)个互不相交的有限集T1,T2,Tm,其中每一个集合本身又是一棵树,称为根的子树(subtree)特点:树中至少有一个结点根树中各子树是互不相交的集合,根,子树,基本术语结点(node)表示树中的元素,包括数据项及若干指向其子树的分支结点的度(degree)结点拥有的子树数叶子(leaf)度为0的结点孩子(child)结点子
2、树的根称为该结点的孩子双亲(parents)孩子结点的上层结点叫该结点的兄弟(sibling)同一双亲的孩子树的度一棵树中最大的结点度数结点的层次(level)从根结点算起,根为第一层,它的孩子为第二层深度(depth)树中结点的最大层次数森林(forest)m(m0)棵互不相交的树的集合,结点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的祖先,b,a,
3、c,g,h,d,e,f,i,j,树的表示,树形表示,图形表示法:,华中科技大学,叶子,根,子树,凹入表表示,a,b,d,e,i,j,f,c,g,h,嵌套集合表示,嵌套括号表示,i,j,d,f,g,h,a,b,c,e,a(b(d,e(i,j),f),c(g,h),2 二叉树,定义定义:二叉树是n(n0)个结点的有限集,它或为空树(n=0),或由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树构成。特点每个结点至多有二棵子树(即不存在度大于2的结点)二叉树的子树有左、右之分,且其次序不能任意颠倒基本形态,二叉树性质性质1:,证明:用归纳法证明之 i=1时,只有一个根结点,是对的 假设对所有
4、j(1ji)命题成立,即第j层上至多有 个结点 那么,第i-1层至多有 个结点 又二叉树每个结点的度至多为2 第i层上最大结点数是第i-1层的2倍,即 故命题得证,性质2:深度为k的二叉树至多有 个结点(k1),证明:由性质1,可得深度为k 的二叉树最大结点数是,性质3:对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1,证明:n1为二叉树T中度为1的结点数。因为:二叉树中所有结点的度均小于或等于2。所以:其结点总数n=n0+n1+n2。又二叉树中,除根结点外,其余结点都只有一个 分支进入。设B为分支总数,则n=B+1。又:分支由度为1和度为2的结点射出,B=n
5、1+2n2 于是,n=B+1=n1+2n2+1=n0+n1+n2 n0=n2+1,几种特殊形式的二叉树满二叉树定义:一棵深度为k且有2k-1个结点的二叉树成为特点:每一层上的结点数都是最大结点数完全二叉树定义:深度为k,有n个结点的二叉树当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称为特点叶子结点只可能在层次最大的两层上出现对任一结点,若其右分支下子孙的最大层次为L,则其左分支下子孙的最大层次必为L 或L+1,性质性质4:性质5:如果对一棵有n个结点的完全二叉树的结点按层序编号,则对任一结点i(1in),有:如果i=1,则结点i是二叉树的根,无双亲;如果i1,则其
6、双亲是i/2如果2in,则结点i无左孩子;如果2in,则其左孩子是2i如果2i+1n,则结点i无右孩子;如果2i+1n,则其右孩子是2i+1,二叉树的存储结构顺序存储结构实现:按满二叉树的结点层次编号,依次存放二叉树中的数据元素特点:结点间关系蕴含在其存储位置中浪费空间,适于存满二叉树和完全二叉树,链式存储结构二叉链表,typedef struct node datatype data;struct node*lchild,*rchild;JD;,在n个结点的二叉链表中,有n+1个空指针域,三叉链表,typedef struct node datatype data;struct node*l
7、child,*rchild,*parent;JD;,练习,一、下面是有关二叉树的叙述,请判断正误。()1.若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n1个非空指针域。()2.二叉树中每个结点的两棵子树的高度差等于1。()3.二叉树中每个结点的两棵子树是有序的。()4.二叉树中每个结点有两棵非空子树或有两棵空子树。()5.二叉树中每个结点的关键字值大于其左非空子树(若存在的话)所有结点的关键字值,且小于其右非空子树(若存在的话)所有结点的关键字值。()6.二叉树中所有结点个数是2k-1-1,其中k是树的深度。()7.二叉树中所有结点,如果不存在非空左子树,则不存在非空右子树。(
8、)8.对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i1个结点。()9.用二叉链表法(link-rlink)存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。()10.具有12个结点的完全二叉树有5个度为2的结点。,二、填空。1 由个结点所构成的二叉树有 种形态。2.一棵深度为6的满二叉树有 个分支结点和 个叶子。3 一棵具有个结点的完全二叉树,它的深度为。4.设一棵完全二叉树有700个结点,则共有 个叶子结点。5.设一棵完全二叉树具有1000个结点,则此完全二叉树有 个叶子结点,有 个度为2的结点,有 个结点只有非空左子树,有 个结点只有非空右子树。6.【严题集6.7】一棵含有n个结点的k叉树,可能达到的最大深度为,最小深度为。,