阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句填写完整。[说明] (1)对给定的字符集合及
阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句填写完整。
[说明]
(1)对给定的字符集合及相应的权值,采用哈夫曼算法构造最优二叉树,并用结构数组存储最优二叉树。例如,给定字符集合{a,b,c,d)及其权值2、7、4、5,可构造如图3-26所示的最优二叉树,以及相应的结构数组Ht(如表3-12所示,其中数组元素Ht[0]不用)。
结构数组Ht的类型定义如下:
(2)用“0”或“1”标识最优二叉树中分支的规则是:从一个结点进入其左(右)孩子结点,就用“0”(或“1”)标识该分支(示例见图3-26)。
(3)若用上述规则标识最优二叉树的每条分支后,从根结点开始到叶子结点为止,按经过分支的次序将相应标识依次排列,可得到由“0”、“1”组成的一个序列,称此序列为该叶子结点的前缀编码。例如图3-26所示的叶子结点a、b、c、d的前缀编码分别是110、0、111、10。
[函数说明1]
函数void LeafCode (int root,int n)的功能是:采用非递归方法,遍历最优二叉树的全部叶子结点,为所有的叶子结点构造前缀编码。其中,形参root为最优二叉树的根结点下标;形参n为叶子结点个数。
在函数void LeafCode (int root,int n)构造过程中,将Ht[p].weight域用做被遍历结点的遍历状态标志。
[函数4.1]
[函数说明2]
函数void Decode (char (作图)buff,int root)的功能是:将前缀编码序列翻译成叶子结点的字符序列,并输出。其中,形参root为最优二叉树的根结点下标;形参buff指向前缀编码序列。
[函数4.2]


这是一道要求读者在用哈夫曼算法构造的最优二叉树上进行编码和译码的程序设计题。本题的解答思路如下。 哈夫曼算法构造最优二叉树的过程如下。 ①根据给定的n个权值{W1,W2,W3,……Wn)构成n棵二叉树的集合F={T1,T2,T3,……Tn),其中每棵二叉树Ti中只有一个带权为Wi的根结点,其左、右子树均空。 ②在F中选取两棵根结点权值最小的树作为左、右子树构造一棵新的二叉树,且置新的二叉树的根结点的权值为其左、右子树根结点的权值之和。 ③在F中删除这两棵二叉树,同时将新得到的二叉树加入F中。 ④重复步骤②和③,直到F只含一棵树为止。这棵树便是最优二叉树。 综上所述,最优二叉树是从叶子到根构造起来的,每次都是先确定一棵二叉树的左、右子树,然后再构造出树根结点,因此最优二叉树中只有叶子结点和分支数为2的内部结点。若已知叶子的数目为n,则内部结点数比叶子少1,因此整棵树所需的存储空间规模是确定的,可以采用数组空间来存储最优二叉树。 例如,给定字符集合{a,b,c,d)及其权值2、7、4、5,构造最优二叉树的过程如图3-31所示。 由于算法中对构成左、右子树的二叉树不进行限定,因此用哈夫曼算法构造出的最优二叉树的形态不是惟一的。另外,题干中已给出了存放最优二叉树的结构数组Ht的类型定义,以及存储图3-31所构造出的最优二叉树的结构数组Ht(见表3-12)。


例字分析:愧:“心”中有“鬼”所以惭愧.舒:“舍”得给“予”他人,自己才舒心,快乐.备选字隘债备选 语文 2020-05-23 …
阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句填写完整。[说明] (1)对给定的字符集合 计算机类考试 2020-05-26 …
阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句写在对应栏内。 [预备知识] ①对给定的字 计算机类考试 2020-05-26 …
说课7分钟能说多少字的稿?我们老师要求我们准备说课,只给7.8分钟,我应该准备多少字的稿啊? 其他 2020-06-28 …
是这样说的吗?刚刚看完男子100米飞人大战的直播..呵呵.我注意了下,运动员准备跑前的英语...好 其他 2020-07-15 …
NATEI三级口译笔译如何准备我说的是教育部的翻译考试.不是人事部CATTI,不要给我说人事部的如何 其他 2020-11-23 …
甲某给乙某打电话约一起去实施抢劫,此行为是否构成犯罪准备?说明理由,说的详细点.此行为不算准备犯罪的 其他 2020-11-30 …
小明把储蓄罐里的硬币也进行了统计,准备捐赠给红十字会.罐里共有硬币90枚,枚数统计,其中一元的小明把 数学 2020-12-05 …
出字谜,根据给出的字出字谜谜面3答案是失、同、围、专、准、备的字谜,根据给出的字出字谜谜面 其他 2021-01-05 …
三国里我那些地方最像刘备说出刘备的事例并写出发生在那回.600字快快最好在20分钟里写出600字左右 其他 2021-01-18 …