《第6章树和二叉树1树的定义和性质》由会员分享,可在线阅读,更多相关《第6章树和二叉树1树的定义和性质(20页珍藏版)》请在金锄头文库上搜索。
1、数据结构讲义数据结构讲义第第6章章 树和二叉树树和二叉树黄可坤嘉应学院树的定义和性质树的定义和性质1 树的定义树的定义l树是一类重要的非线性数据结构,是以分支树是一类重要的非线性数据结构,是以分支关系定义的层次结构。关系定义的层次结构。l定义定义u定义:树定义:树(tree)是是n(n0)个结点的有限集个结点的有限集T,其其中中:l有且仅有一个特定的结点,称为树的根有且仅有一个特定的结点,称为树的根(root)l当当n1时,其余结点可分为时,其余结点可分为m(m0)个互不相交的有限个互不相交的有限集集T1,T2,Tm,其中每一个集合本身又是一棵树,其中每一个集合本身又是一棵树,称为根的子树称为
2、根的子树(subtree)u特点:特点:l树中至少有一个结点树中至少有一个结点根根l树中各子树是互不相交的集合树中各子树是互不相交的集合A只有根结点的树ABCDEFGHIJKLM有子树的树根子树l基本术语基本术语u结点结点(node)表示树中的元素,包括数据项及若表示树中的元素,包括数据项及若干指向其子树的分支干指向其子树的分支u结点的度结点的度(degree)结点拥有的子树数结点拥有的子树数u叶子叶子(leaf)度为度为0的结点的结点u孩子孩子(child)结点子树的根称为该结点的孩子结点子树的根称为该结点的孩子u双亲双亲(parents)孩子结点的上层结点叫该结点的孩子结点的上层结点叫该结
3、点的u兄弟兄弟(sibling)同一双亲的孩子同一双亲的孩子u树的度树的度一棵树中最大的结点度数一棵树中最大的结点度数u结点的层次结点的层次(level)从根结点算起,根为第一层,从根结点算起,根为第一层,它的孩子为第二层它的孩子为第二层u深度深度(depth)树中结点的最大层次数树中结点的最大层次数u森林森林(forest)m(m 0)棵互不相交的树的集合棵互不相交的树的集合ABCDEFGHIJKLM结点结点A的度:的度:3结点结点B的度:的度:2结点结点M的度:的度:0叶子:叶子:K,L,F,G,M,I,J结点结点A的孩子:的孩子:B,C,D结点结点B的孩子:的孩子:E,F结点结点I的双亲
4、:的双亲:D结点结点L的双亲:的双亲:E结点结点B,C,D为兄弟为兄弟结点结点K,L为兄弟为兄弟树的度:树的度:3结点结点A的层次:的层次:1结点结点M的层次:的层次:4树的深度:树的深度:4结点结点F,G为堂兄弟为堂兄弟结点结点A是结点是结点F,G的祖先的祖先bacghdefij树的表示树的表示l树形表示树形表示图形表示法:图形表示法:教师教师学生学生其他人员其他人员99级级 2000级级 2001级级 2002级级华中科技大学华中科技大学计算机系计算机系电信系电信系自控系自控系叶子叶子根根子树子树凹入表表示凹入表表示凹入表表示凹入表表示abdeijfcgh嵌套集合表示嵌套集合表示嵌套集合表
5、示嵌套集合表示嵌套括号表示嵌套括号表示嵌套括号表示嵌套括号表示ijdfghabcea ( b ( d, e ( i, j ), f ), c ( g, h ) )2 二叉树二叉树l定义定义u定义:二叉树是定义:二叉树是n(n 0)个结点的有限集,它或为个结点的有限集,它或为空树空树(n=0),或由一个根结点和两棵分别称为左子或由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树构成。树和右子树的互不相交的二叉树构成。u特点特点l每个结点至多有二棵子树每个结点至多有二棵子树(即不存在度大于即不存在度大于2的结点的结点)l二叉树的子树有左、右之分,且其次序不能任意颠倒二叉树的子树有左、右之分
6、,且其次序不能任意颠倒u基本形态基本形态A只有根结点的二叉树空二叉树AB右子树为空AB左子树为空ABC左、右子树均非空l二叉树性质二叉树性质u性质性质1:证明:用归纳法证明之 i=1时,只有一个根结点, 是对的 假设对所有j(1j1,则其双亲是则其双亲是 i/2 l如果如果2in,则结点则结点i无左孩子;如果无左孩子;如果2i n,则其左孩子是则其左孩子是2il如果如果2i+1n,则结点则结点i无右孩子;如果无右孩子;如果2i+1 n,则其右孩子是则其右孩子是2i+1二叉树的存储结构二叉树的存储结构l顺序存储结构顺序存储结构u实现:按满二叉树的结点层次编号,依次存放二叉实现:按满二叉树的结点层
7、次编号,依次存放二叉树中的数据元素树中的数据元素u特点:特点:l结点间关系蕴含在其存储位置中结点间关系蕴含在其存储位置中l浪费空间,适于存满二叉树和完全二叉树浪费空间,适于存满二叉树和完全二叉树abcdefga b c d e 0 0 0 0 f g 1 2 3 4 5 6 7 8 9 10 11l链式存储结构链式存储结构u二叉链表二叉链表typedef struct node datatype data; struct node *lchild, *rchild;JD;lchild data rchild ABCDEFG在n个结点的二叉链表中,有n+1个空指针域 AB C D E F Gl三
8、叉链表三叉链表typedef struct node datatype data; struct node *lchild, *rchild, *parent;JD;lchild data parent rchildABCDEFG A B C D E F G练习练习一、下面是有关二叉树的叙述,请判断正误。一、下面是有关二叉树的叙述,请判断正误。( )1. 1. 若若二二叉叉树树用用二二叉叉链链表表作作存存贮贮结结构构,则则在在n n个个结结点点的的二二叉叉树树链链表表中中只有只有n1n1个非空指针域。个非空指针域。( )2.2.二叉树中每个结点的两棵子树的高度差等于二叉树中每个结点的两棵子树的
9、高度差等于1 1。 ( )3.3.二叉树中每个结点的两棵子树是有序的。二叉树中每个结点的两棵子树是有序的。 ( )4.4.二叉树中每个结点有两棵非空子树或有两棵空子树。二叉树中每个结点有两棵非空子树或有两棵空子树。 ( )5.5.二二叉叉树树中中每每个个结结点点的的关关键键字字值值大大于于其其左左非非空空子子树树(若若存存在在的的话话)所所有有结结点点的的关关键键字字值值,且且小小于于其其右右非非空空子子树树(若若存存在在的的话话)所所有有结结点点的的关关键字值。键字值。 ( )6.6.二叉树中所有结点个数是二叉树中所有结点个数是2 2k-1k-1-1-1,其中其中k k是树的深度。是树的深度
10、。 ( )7.7.二二叉叉树树中中所所有有结结点点,如如果果不不存存在在非非空空左左子子树树,则则不不存存在在非非空空右右子子树。树。 ( )8.8.对对于于一一棵棵非非空空二二叉叉树树,它它的的根根结结点点作作为为第第一一层层,则则它它的的第第i i层层上上最最多能有多能有2 2i i1 1个结点。个结点。 ( )9.9.用用二二叉叉链链表表法法(link-link-rlinkrlink)存存储储包包含含n n个个结结点点的的二二叉叉树树,结结点点的的2n2n个指针区域中有个指针区域中有n+1n+1个为空指针。个为空指针。( )10. 10. 具有具有1212个结点的完全二叉树有个结点的完全
11、二叉树有5 5个度为个度为2 2的结点。的结点。二、填空。二、填空。1 1 由个结点所构成的二叉树有由个结点所构成的二叉树有 种形态。种形态。 2. 2. 一一棵棵深深度度为为6 6的的满满二二叉叉树树有有 个个分分支支结结点点和和 个叶子。个叶子。3 3 一一棵棵具具有有个个结结点点的的完完全全二二叉叉树树,它它的的深深度度为为 。4.4. 设设一一棵棵完完全全二二叉叉树树有有700700个个结结点点,则则共共有有 个个叶子结点。叶子结点。5. 5. 设设一一棵棵完完全全二二叉叉树树具具有有10001000个个结结点点,则则此此完完全全二二叉叉树树有有 个个叶叶子子结结点点,有有 个个度度为为2 2的的结结点点,有有 个个结结点点只只有有非空左子树,有非空左子树,有 个结点只有非空右子树。个结点只有非空右子树。6. 6. 【严题集严题集6.76.7】 一棵含有一棵含有n n个结点的个结点的k k叉树,可能达到的最叉树,可能达到的最大深度为大深度为 ,最小深度为,最小深度为 。