一个关于数据结构的问题,有关哈夫曼编码的,解答看不懂,求解答,谢谢!

作者&投稿:周宽 (若有异议请与网页底部的电邮联系)
求解,关于数据结构的哈夫曼编码的问题~


哈夫曼编码首先要构造哈夫曼树,其构造规则是从概率这个序列中选择两个最小结点的值构造一颗树,新的树根的权值为两个子树的概率权值和。
如题中,首先选择0.02 和 0.03构造一颗树,将权值之和放回序列中,为:
0.07 0.19 0.10 0.32 0.21 0.06 0.05
继续上述过程只剩下一颗树为止。
最终哈夫曼树为:
1
/ \
0.40 0.60
/ \ / \
b0.19 g0.21 0.28 e0.32
/ \
0.11 0.17
/ \ / \
0.05 h0.06 a0.07 d0.10
/ \
f(0.02) c(0.03)
哈夫曼编码是从根结点开始,找叶子结点,也就是相关字符,默认往左为0,往右为1
所以b的编码是00,g:01 e:11 h:1001 a:1010 d:1011 f:10000c:10001

根据题意哈夫曼树的形状类似如下
o
/ \
o Y
/ \
o Y
/ \
o o
/ \ / \
A B C D
或者
o
/ \
o Y
/ \
o Y
/ \
o C
/ \
A B
第1点,编码长度不超过4,每一个“/”边表示为0 ,“\”边表示为1,如上图A的编码是:0000,B是0001,如果深度超过5,有六层的话,最下面的叶子结点编码有5位,所以编码长度不超过4,说明哈夫曼树深度不超过5
第2点,编码1 和 01 是在深度为2、3层,如上面的图Y。
第3点,其他字符有可能是00或者 0000 0001 0010 0011或者 001 0000 0001 在第三层 第四层 第五层,这里说只能在第四层和第五层,不严谨。有可能只有是三个字符的时候,只有三层了。
还可以多少个字符编码:1个或者3个或者4个。


在线等。关于数据结构的,关于时间复杂度的问题。
第一个问题:后面三条语句之所以比前面的少执行一次,原因是“for”当条件不成立时仍要执行一次。如n=1,“for语句”要执行2次(i=1和i=2);但循环体中的语句则只在i=1时才会执行。另外,此题的正确答案应为:语句2的频度为:n+1;语句3的频度为:n;...第二个问题:“算法分析”的目的是...

关于数据结构的题
A) 存储 B) 物理 C) 逻辑 D) 物理和存储 ( C )2. 算法分析的目的是:A) 找出数据结构的合理性 B) 研究算法中的输入和输出的关系 C) 分析算法的效率以求改进 D) 分析算法的易懂性和文档性 ( A )3. 算法分析的两个主要方面是:A) 空间复杂性和时间复杂性 ...

关于数据结构的问题!二维数组A【10】【6】采用行优先的存储方法,若每个...
只要计算从A【3】【4】到有多少个数据元素再*4就可以了,A【3】【4】到A【3】【6】有三个元素,A【4】【1】至A【4】【3】有两个元素,故元素A【4】【3】的储存地址5*4+1000

算法与数据结构的问题,急!!!
注意:“比较”意即讨论不同数据结构的相似特点 “对比”则是请讨论不同数据结构的不同之意。这题不是选1和2那个方法,1和2是不同场景,第一个是随机信息的插入,且90%数据是可不用插入的,第二个是有序信息的插入。这题蛮麻烦,不能保证答对,简单分析下好了,对于插入操作,基本上都是两个...

关于数据结构中的队列的几个简单问题 ^_^
1使用队列一定要有头尾两个指针。2。如果队列采用顺序存储结构,这里的指针一般不是实实在在的指针类型,是两个整型变量,分别存储对头元素和队尾元素的下标(或队尾元素的下一位置的下标)如果队列采用链式存储结构,则是实实在在的指针类型

数据结构问题
链表是有头结点的,而头结点在第一个节点之前,如你图中所画,假如a[i]为第一个元素,那么a[i-1]就是头指针,头指针里面不存放数据。假设你要找第1个节点,while(p->next && j < i),这个循环退出的条件是p->next为NULL或j==i,刚开始j=1,p指向的是头节点,这个时候如果第一个节点不...

关于数据结构——线性表一问题
关于数据结构——线性表一问题  我来答 首页 在问 全部问题 娱乐休闲 游戏 旅游 教育培训 金融财经 医疗健康 科技 家电数码 政策法规 文化历史 时尚美容 情感心理 汽车 生活 职业 母婴 三农 互联网 生产制造 其他 日报 日报精选 日报广场 用户 认证用户 视频作者 ...

求高手~~~一个关于数据结构顺序表的简单问题~
L3->data[L3->length++]不是超出了长度范围了吗?不知道你这样表示的意思是什么。其实顺序表和一个一维数组差不多。实质上就是将2个数组合并到第三个数组中。还要保持从小到大排序 void merge(seqlist *L1,seqlist *L2,seqlist *L3){ int i=j=k=n=m=q=0; \/\/i,j,k表示3个数组的...

关于C语言数据结构的问题
说几句我的理解:1.&s是C++中的一种变量类型,叫做"引用"(reference),它的作用是给变量起一个别名.具体的用法你可以找一本C++的书来看看.在这里用引用变量是为了改变实参的值.(C中函数的值传递是单向的,只能由实参传给形参.)2.在C中,数组a[i]是转化成*(a+i)来处理的,所以也可以用指针来...

数据结构问题,关于队列的
Q.rear->Next=p;当元素E放入到结点p后,在把p链接到这个队列Q中。由于你没有把Q的结构体给描述出来,暂时认为Q.rear是原队列Q的最后一个结点。Q.rear->Next=p 后,P就变成了队列的最后一个结点 Q.rear=p;这句话放在这里是错了,影响了你整个函数的意思。暂时认为Q.rear=p 是让原队列Q的...

宜秀区18555953967: 数据结构题目问:给定N个权值,则构造的哈夫曼树中的结点总数为多少个,并附上相关的知识点, -
徐耐复方:[答案] 算上N个叶子的话一共2N-1个.参见定理:0度结点(即叶子)数比2度结点数多1.另外Huffman树中没有1度结点.

宜秀区18555953967: 一道数据结构题目:哈弗曼算法求解描述求解最优前缀码(平均码长最小)问题的哈夫曼(Huffman)算法的基本思想.并对以下实例,给出其哈夫曼编码及求... -
徐耐复方:[答案] 运行过了没有任何问题,有什么问题可以交流下. #include #include #define N 6 typedef struct { int W,P,R,L; }HTNode; typedef struct { char ch; char code[10]; }HTCode; HTCode HC[27]; void select(HTNode HT[],int *min1,int *min2,int *a,int *b) { int i;int ...

宜秀区18555953967: 数据结构中哈夫曼树的问题用5个权值{3,2,4,5,1}构造的哈夫曼树的带权路径长度是? -
徐耐复方:[答案] 哈夫曼树为: 15 / \ 6 9 / \ / \ 3 【3】【4】 【5】 / \ 【1】 【2】 树的带权路径长度为树中所有叶子结点的带权路径长度之和,而结点的带权路径长度为结点到根节点之间的路径长度与该节点上权的乘积. WPL=3*(1+2)+2*3+2*(4+5)=33

宜秀区18555953967: 数据结构中的一道题若一棵哈夫曼树共有9个顶点,则其叶子结点的个数为__(7)__.(7)A.4 B.5 C.6 D.7 -
徐耐复方:[答案] 哈夫曼树是没有度数为1的分支结点的二叉树. 哈夫曼树一般情况下共有2n-1个结点 2n-1=9 n=5 选B

宜秀区18555953967: 数据结构题目,关于哈弗曼编码,用C语言来做(非常急的,谢谢了) -
徐耐复方: void HuffmanCoding(HuffmanTree &HT, HuffmanCode &HC, int *w, int n) { // w存放n个字符的权值(均>0),构造哈夫曼树HT, // 并求出n个字符的哈夫曼编码HC int i, j, m, s1,s2; char *cd; int p; int cdlen; if (n m = 2 * n - 1; HT = (HuffmanTree)...

宜秀区18555953967: 数据结构问题:怎么计算?1.一棵有n个叶子结点的哈夫曼树共有__2n - 1 - 个结点.2、顺序查找查找成功时的最坏比较次数为(n - 1)和查找失败时的比较次数... -
徐耐复方:[答案] 1、建议你看看哈夫曼树的生成方法,n个叶子节点,看做n个森林,(1)挑权值最小的两个将其权值相加作为他们的亲节点,这时就有n-1个森林,亲结点权值参与新的比较;(2)重复1,直到将整个森林变为一棵树.很显然n个叶子节...

宜秀区18555953967: 数据结构中哈夫曼树的问题 -
徐耐复方: 哈夫曼树为: 15 / \ 6 9 / \ / \ 3 【3】【4】 【5】 / \ 【1】 【2】 树的带权路径长度为树中所有叶子结点的带权路径长度之和,而结点的带权路径长度为结点到根节点之间的路径长度与该节点上权的乘积.WPL=3*(1+2)+2*3+2*(4+5)=33

宜秀区18555953967: 数据结构问题,赫夫曼树,图中最下面的一串数字是什么意思 -
徐耐复方: 我认为这应该是一个问题,让同学们能更好的运用和理解哈夫曼编码和树的联系.就是因为构造出来的哈夫曼树必须满足每一个字母对应一个数字编号,而且每个数字编号也只对应一个字母,因为没有任何一个字母的编号是另一个的前缀.那么也就有另一个推论:说给你一串二进制的01串你可以找到它对应的字符串,而且为了确认这个哈夫曼树的性质,这样找到的字符串应该是唯一确定的.1001010010101001000111100 通过树或者下面的表可以推出:BADCDFEED 最后对应的字符串应该是这个...(可能您还要再检查一下,谢啦)

宜秀区18555953967: 求解,关于数据结构的哈夫曼编码的问题 -
徐耐复方: 方案一应该指的就是下面那个图了.下面那个图是一棵二进制的哈夫曼树,其中因为是二进制编码,所以使用的是0\1的边.那么对于每一个叶子节点来说,从根节点到叶子节点走过的边就是这个数字的编码.那么举一个例子,比如频数=2的也就是最...

宜秀区18555953967: 哈夫曼树是二叉树吗? -
徐耐复方: 哈夫曼树不一定是二叉树,也有可能有度为m的哈弗曼树,度为m的哈弗曼树只有度为m的结点和度为0的结点.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网