网站大量收购闲置独家精品文档,联系QQ:2885784924

最优编与译码的实现.ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最优编与译码的实现

毖远辨侍奋乙往扎问基衣滑员薪场磕筏劣蹄盔护砰驹秉羞稀缓纵闺简悦堪最优编码与译码的实现最优编码与译码的实现;*;一、任务描述 ;二、相关知识 ;二叉树也可以用递归的形式定义。即:二叉树是n(n≥0)个结点的有限集合。当n=0时,称为空二叉树;当n0时,有且仅有一个结点为二叉树的根,其余结点被分成两个互不相交的子集,一个作为左子集,另一个作为右子集,每个子集又是一个二叉树。 ;1.2 二叉树的基本运算 (1) 构造一棵二叉树 CreateBTree ( BT) (2)清空以BT为根的二叉树 ClearBTree(BT) (3)判断二叉树是否为空 BTreeEmpty(BT) (4)获取给定结点的左孩子和右孩子 LeftChild(BT,node),RightChild(BT,node) (5)获取给定结点的双亲 Parent(BT,node) (6)遍历二叉树Traverse(BT) ;2.二叉树的性质 二叉树具有下列5个重要的性质。 【性质1】 在二叉树的第i层上最多有2i-1个结??(i≥1)。 证明:二叉树的第1层只有一个根结点,所以,i=1时,2i-1=21-1=20=1成立。 假设对所有的j,1≤ji成立,即第j层上最多有2j-1个结点成立。若j=i-1,则第j层上最多有2j-1=2i-2个结点。由于在二叉树中,每个结点的度最大为2,所以可以推导出第i层最多的结点个数就是第i-1层最多结点个数的2倍,即2i-2*2=2i-1。 ;【性质2】 深度为K的二叉树最多有2K-1个结点(K≥1)。 证明:由性质1可以得出,1至K层各层最多的结点个数分别为:20,21,22,23,...,2K-1。这是一个以2为比值的等比数列,前n项之和的计算公式为: ;【性质3】 对于任意一棵二叉树BT,如果度为0的结点个数为n0,度为2的结点个数为n2,则n0=n2+1。 证明:假设度为1的结点个数为n1,结点总数为n,B为二叉树中的分支数。 因为在二叉树中,所有结点的度均小于或等于2,所以结点总数为: n=n0+n1+n2 (1) 再查看一下分支数。在二叉树中,除根结点之外,每个结点都有一个从上向下的分支指向,所以,总的结点个数n与分支数B之间的关系为:n=B+1。 又因为在二叉树中,度为1的结点产生1个分支,度为2的结点产生2个分支,所以分支数B可以表示为:B=n1+2n2。 将此式代入上式,得: n=n1+2n2+1 (2) 用(1)式减去(2)式,并经过调整后得到:n0=n2+1。 ;满二叉树:如果一个深度为K的二叉树拥有2K-1个结点,则将它称为满二叉树。;【性质4】 具有n个结点的完全二叉树的深度为 ?log2n?+1。其中,?log2n? 的结果是不大于log2n的最大整数。 证明:假设具有n个结点的完全二叉树的深度为K,则根据性质2可以得出: 2K-1-1n≤2K-1 将不等式两端加1得到: 2K-1≤n2K 将不等式中的三项同取以2为底的对数,并经过化简后得到: K-1≤log2nK 由此可以得到:?log2n? =K-1。整理后得到:K= ?log2n?+1。 ;【性质5】 对于有n个结点的完全二叉树中的所有结点按从上到下,从左到右的顺序进行编号,则对任意一个结点i (1≤i≤n),都有: (1)如果i=1,则结点i是这棵完全二叉树的根,没有双亲;否则其双亲结点的编号为 ?i/2?。 (2)如果2in,则结点i没有左孩子;否则其左孩子结点的编号为2i。 (3)如果2i+1n,则结点i没有右孩子;否则其右孩子结点的编号为2i+1。 下面我们利用数学归纳法证明这个性质。 我们首先证明(2)和(3)。 当i=1时,若n≥3,则根的左、右孩子的编号分别是2,3;若n3,则根没有右孩子;若n2,则根将没有左、右孩子;以上对于(2)和(3)均成立。 假设:对于所有的1≤j≤i 结论成立。即:结点j的左孩子编号为2j;右孩子编号为2j+1。 ;*;下面利用上面的结论证明(1)。 对于任意一个结点i,若2i≤n,则左孩子的编号为2i,反过来结点2i的双亲就是i,而 ?2i/2?=i;若2i+1≤n,则右孩子的编号为2i+1,反过来结点2i+1的双亲就是i,而 ?(2i+1)/2? =i,由此可以得出(1)成立。 ;3.二叉树的存储结构 二叉树也可以采用两种存储方式:顺序存储结构和链式存储结构。 ? 3.1 顺序存储结构 这种存储结构适用于完全二叉树。其存储形式为:用一组连续的存储单元按照完全二叉树的每个结点编号的顺序存放结点内容。下面是一棵二叉树及其相应的存储结构。 ;在C语言中,这种存储形式

文档评论(0)

cgsx259 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档