树二叉树树森林与二叉树的转换树的应用.ppt
《树二叉树树森林与二叉树的转换树的应用.ppt》由会员分享,可在线阅读,更多相关《树二叉树树森林与二叉树的转换树的应用.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、树树二叉树二叉树树、森林与二叉树的转换树、森林与二叉树的转换树的应用树的应用第五章第五章 树和二叉树树和二叉树12/4/20221树和森林的概念树和森林的概念树的定义树的定义树的定义树的定义 树是由树是由树是由树是由n n(n n 0)0)个结点组成的有限集合。如果个结点组成的有限集合。如果个结点组成的有限集合。如果个结点组成的有限集合。如果n n =0=0,称为空树;如果称为空树;如果称为空树;如果称为空树;如果n n 0 0,则则则则 有一个特定的称之为有一个特定的称之为有一个特定的称之为有一个特定的称之为根根根根(root)(root)的结点,它只有的结点,它只有的结点,它只有的结点,它
2、只有直接后继,但没有直接前驱;直接后继,但没有直接前驱;直接后继,但没有直接前驱;直接后继,但没有直接前驱;除根以外的其它结点划分为除根以外的其它结点划分为除根以外的其它结点划分为除根以外的其它结点划分为mm(mm 0)0)个互不相个互不相个互不相个互不相交的有限集合交的有限集合交的有限集合交的有限集合T T0 0,T T1 1,T Tmm-1-1,每个集合又是一棵树,每个集合又是一棵树,每个集合又是一棵树,每个集合又是一棵树,并且称之为根的并且称之为根的并且称之为根的并且称之为根的子树子树子树子树(subTreesubTree)。每棵子树的根结点每棵子树的根结点每棵子树的根结点每棵子树的根结
3、点有且仅有一个直接前驱,但可以有有且仅有一个直接前驱,但可以有有且仅有一个直接前驱,但可以有有且仅有一个直接前驱,但可以有0 0个或多个直接后个或多个直接后个或多个直接后个或多个直接后继。继。继。继。12/4/20222树的表示树的表示树的表示树的表示 树型表示树型表示树型表示树型表示bacghdefij12/4/20223凹入表表示凹入表表示凹入表表示凹入表表示abdeijfcgh12/4/20224嵌套集合表示嵌套集合表示嵌套集合表示嵌套集合表示嵌套括号表示嵌套括号表示嵌套括号表示嵌套括号表示ijdfghabcea(b(d,e(i,j),c(g,h)12/4/20225 结点结点结点结点(
4、node)(node)(node)(node)结点的度结点的度结点的度结点的度(degree)(degree)(degree)(degree)结点的子树个数结点的子树个数结点的子树个数结点的子树个数 分支分支分支分支(branch)(branch)(branch)(branch)结点结点结点结点 度不为度不为度不为度不为0 0 0 0的结点的结点的结点的结点 叶叶叶叶(leaf)(leaf)(leaf)(leaf)结点结点结点结点 度为度为度为度为0 0 0 0的结点的结点的结点的结点 子女子女子女子女(child)(child)(child)(child)结点结点结点结点 某结点子树的根结点
5、某结点子树的根结点某结点子树的根结点某结点子树的根结点 双亲双亲双亲双亲(parent)(parent)(parent)(parent)结点结点结点结点 某个结点是其子树之根的某个结点是其子树之根的某个结点是其子树之根的某个结点是其子树之根的 双亲双亲双亲双亲 12/4/20226 兄弟兄弟兄弟兄弟(sibling)(sibling)(sibling)(sibling)结点结点结点结点 具有同一双亲的所有结点具有同一双亲的所有结点具有同一双亲的所有结点具有同一双亲的所有结点 祖先祖先祖先祖先(ancestor)(ancestor)(ancestor)(ancestor)结点结点结点结点 若树中
6、结点若树中结点若树中结点若树中结点k k k k到到到到k k k ks s s s存在一条路径,存在一条路径,存在一条路径,存在一条路径,则称则称则称则称k k k k是是是是k k k ks s s s的祖先的祖先的祖先的祖先 子孙子孙子孙子孙(descendant)(descendant)(descendant)(descendant)结点结点结点结点 若树中结点若树中结点若树中结点若树中结点k k k k到到到到k k k ks s s s存在一条路径,存在一条路径,存在一条路径,存在一条路径,则称则称则称则称k k k ks s s s是是是是k k k k的子孙的子孙的子孙的子孙
7、结点所处层次结点所处层次结点所处层次结点所处层次(level)(level)(level)(level)根结点的层数为根结点的层数为根结点的层数为根结点的层数为1 1 1 1,其余结点的层,其余结点的层,其余结点的层,其余结点的层 数为双亲结点的层数加数为双亲结点的层数加数为双亲结点的层数加数为双亲结点的层数加1 1 1 1 树的高度树的高度树的高度树的高度(depth)(depth)(depth)(depth)树中结点的最大层数树中结点的最大层数树中结点的最大层数树中结点的最大层数 树的度树的度树的度树的度(degree)(degree)(degree)(degree)n n 有序树有序树有
8、序树有序树 子树的次序不能互换子树的次序不能互换子树的次序不能互换子树的次序不能互换n n 无序树无序树无序树无序树 子树的次序可以互换子树的次序可以互换子树的次序可以互换子树的次序可以互换n n 森林森林森林森林 互不相交的树的集合互不相交的树的集合互不相交的树的集合互不相交的树的集合12/4/20227树的基本操作树的基本操作1 1、初始化、初始化、初始化、初始化2 2、求指定结点所在树的根结点、求指定结点所在树的根结点、求指定结点所在树的根结点、求指定结点所在树的根结点3 3、求指定结点的双亲结点、求指定结点的双亲结点、求指定结点的双亲结点、求指定结点的双亲结点4 4、求指定结点的某一孩
9、子结点、求指定结点的某一孩子结点、求指定结点的某一孩子结点、求指定结点的某一孩子结点5 5、求指定结点的最右边兄弟结点、求指定结点的最右边兄弟结点、求指定结点的最右边兄弟结点、求指定结点的最右边兄弟结点6 6、将一棵树插入到另一树的指定结点下作为它、将一棵树插入到另一树的指定结点下作为它、将一棵树插入到另一树的指定结点下作为它、将一棵树插入到另一树的指定结点下作为它 的子树的子树的子树的子树7 7、删除指定结点的某一子树、删除指定结点的某一子树、删除指定结点的某一子树、删除指定结点的某一子树8 8、树的遍历、树的遍历、树的遍历、树的遍历12/4/20228二叉树二叉树(Binary Tree)
10、二叉树的定义二叉树的定义二叉树的五种不同形态二叉树的五种不同形态 一棵二叉树是结点的一个有限集合,该集合一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根结点加上两棵分别称或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。为左子树和右子树的、互不相交的二叉树组成。12/4/20229性质性质性质性质1 1 若二叉树的层次从若二叉树的层次从若二叉树的层次从若二叉树的层次从1 1开始开始开始开始,则在二叉树的则在二叉树的则在二叉树的则在二叉树的 第第第第 i i 层最多有层最多有层最多有层最多有 2 2i-1 i-1 个结点。个结点。个结点。个结点。(
11、i i 0)0)二叉树的性质二叉树的性质证明:证明:证明:证明:i=1 i=1 时,有时,有时,有时,有2 2i-1 i-1 =2 20 0=1=1,成立成立成立成立假定假定假定假定 :i=k i=k 时性质成立;时性质成立;时性质成立;时性质成立;当当当当 i=k+1 i=k+1 时,第时,第时,第时,第k+1k+1的结点至多是第的结点至多是第的结点至多是第的结点至多是第k k层结点层结点层结点层结点的两倍,即总的结点个数至多为的两倍,即总的结点个数至多为的两倍,即总的结点个数至多为的两倍,即总的结点个数至多为2222k-1 k-1=2 2k k故命题成立故命题成立故命题成立故命题成立12/
12、4/202210性质性质性质性质2 2 高度为高度为高度为高度为k k的二叉树最多有的二叉树最多有的二叉树最多有的二叉树最多有 2 2k k-1-1个结点。个结点。个结点。个结点。(k k 1)1)证明:仅当每一层都含有最大结点数时,二叉树证明:仅当每一层都含有最大结点数时,二叉树证明:仅当每一层都含有最大结点数时,二叉树证明:仅当每一层都含有最大结点数时,二叉树的结点数最多,利用性质的结点数最多,利用性质的结点数最多,利用性质的结点数最多,利用性质1 1可得二叉树的结点数可得二叉树的结点数可得二叉树的结点数可得二叉树的结点数至多为:至多为:至多为:至多为:2 20 0+2 21 1+2 22
13、 2+2 23 3+2 2k-1 k-1=2 2k k 1 1 12/4/202211性质性质性质性质3 3 对任何一棵二叉树对任何一棵二叉树对任何一棵二叉树对任何一棵二叉树,如果其叶结点个数为如果其叶结点个数为如果其叶结点个数为如果其叶结点个数为 n n0 0,度为度为度为度为2 2的非叶结点个数为的非叶结点个数为的非叶结点个数为的非叶结点个数为 n n2 2,则有则有则有则有 n n0 0n n2 21 1证明:证明:证明:证明:1 1、结点总数为度为、结点总数为度为、结点总数为度为、结点总数为度为0 0的结点加上度为的结点加上度为的结点加上度为的结点加上度为1 1的结点再加上度的结点再加
14、上度的结点再加上度的结点再加上度 为为为为2 2的结点:的结点:的结点:的结点:n=nn=n0 0+n+n1 1+n+n2 22 2、另一方面,二叉树中一度结点有一个孩子,二另一方面,二叉树中一度结点有一个孩子,二另一方面,二叉树中一度结点有一个孩子,二另一方面,二叉树中一度结点有一个孩子,二 度结度结度结度结 点有二个孩子,根结点不是任何结点的孩子,因此,点有二个孩子,根结点不是任何结点的孩子,因此,点有二个孩子,根结点不是任何结点的孩子,因此,点有二个孩子,根结点不是任何结点的孩子,因此,结点总数为:结点总数为:结点总数为:结点总数为:n=nn=n1 1+2n+2n2 2+1+13 3、两
15、式相减,得到:两式相减,得到:两式相减,得到:两式相减,得到:n n0 0=n=n2 2+1 +1 12/4/202212定义定义1 满二叉树满二叉树(Full Binary Tree)一棵深度为一棵深度为k 且有且有2k-1个结点的二叉树。个结点的二叉树。定义定义2 完全二叉树完全二叉树(Complete Binary Tree)若设二叉树的高度为若设二叉树的高度为h,则共有则共有h+1层。层。除第除第h层外,其它各层层外,其它各层(0 h-1)的结点数都达的结点数都达到最大个数,第到最大个数,第h层从右向左连续缺若干结层从右向左连续缺若干结点,这就是完全二叉树。点,这就是完全二叉树。12/
16、4/202213性质性质4 具有具有n个结点的完全二叉树的高度个结点的完全二叉树的高度 为为 log2n +1证明:设完全二叉树的高度为证明:设完全二叉树的高度为h h,则有则有 2 2h-1h-1-1 -1 n n 2 2h h-1 -1 2 2h-1h-1=n n 2 2h h 取对数取对数 h h 1 log 1 log2 2(n n)1,1,则则则则 i i 的双亲为的双亲为的双亲为的双亲为 i i/2/2 n n 若若若若2*2*i i=n n/2/2 的结点必定是页结点的结点必定是页结点的结点必定是页结点的结点必定是页结点 若若若若2*2*i i+1=+1 data s-datac
17、hch;s-s-lchildlchildNULL;NULL;s-s-rchildrchildNULL;NULL;12/4/202223 rear+;Qrearrear+;Qrears;s;if(rear=1)root if(rear=1)roots;s;else else if(s&Qfront)if(s&Qfront)if(rear%2=0)Qfront-if(rear%2=0)Qfront-lchildlchilds;s;else Qfront-else Qfront-rchildrchilds;s;if(rear%2=1)front+;if(rear%2=1)front+;chch=ge
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 森林 转换 应用
限制150内