很多朋友对于哈夫曼树编码例题和哈夫曼树怎么编码不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
99个结点的哈夫曼树编码多少个啊
设二叉树中度为0、1、2的结点个数分别为n0,n1,n2由于Huffman树中没有度为1的结点,因此n1=0于是n0+n2=99按照二叉树的性质n0=n2+1,代入得2n0-1=99所以叶子结点个数n0=50个
6个结点的哈夫曼树编码总长度是多少
先构造哈夫曼树:17/\89/\36/\12所以带权路径长度WPL=(1+2)*3+6*2+8*1=29
{7,2,8,4,16,3,9}构造出哈夫曼树。并计算带权路径
7个权值是72841639(1)从小到大排序23478916(这是有序序列)(2)每次提取最小的两个结点,取结点2和结点3,组成新结点N5,其权值=2+3=5,取数值较小的结点作为左分支,结点2作为左分支,而结点3就作为右分支.(3)将新结点N5放入有序序列,保持从小到大排序:4N578916(4)重复步骤(2),提取最小的两个结点,结点4与N5组成新结点N9,其权值=4+5=9,结点4的数值较小,作为左分支,N5就作为右分支.(5)将新结点N9放入有序序列,保持从小到大排序:789N916[注意:新结点N9排在原有结点9的后面](6)重复步骤(2),提取最小的两个结点,结点7与结点8组成新结点N15,其权值=7+8=15,结点7的数值较小,作为左分支,结点8就作为右分支.(7)将新结点N15放入有序序列,保持从小到大排序:9N9N1516(8)重复步骤(2),提取最小的两个结点,结点9与N9组成新结点N18,其权值=9+9=18,结点9作为左分支,N9就作为右分支.(9)将新结点N18放入有序序列,保持从小到大排序:N1516N18(10)重复步骤(2),提取最小的两个结点,N15与结点16组成新结点N31,其权值=15+16=31,N15的数值较小,作为左分支,结点16就作为右分支.(11)将新结点N31放入有序序列,保持从小到大排序:N18N31(12)重复步骤(2),提取剩下的两个结点,N18与N31组成新结点N49,其权值=18+31=49,数值较小的N18作为左分支,N31就作为右分支.最后得到哈夫曼树:N49/\N18N31/\/\9N9N1516/\/\4N578/\23带权路径长度(WPL):根结点N49到结点16的路径长度是2,结点16的带权路径长度是16*2根结点N49到结点9的路径长度是2,结点9的带权路径长度是9*2根结点N49到结点8的路径长度是3,结点8的带权路径长度是8*3根结点N49到结点7的路径长度是3,结点7的带权路径长度是7*3根结点N49到结点4的路径长度是3,结点4的带权路径长度是4*3根结点N49到结点3的路径长度是4,结点3的带权路径长度是3*4根结点N49到结点2的路径长度是4,结点2的带权路径长度是2*4所以,哈夫曼树的带权路径长度(WPL)等于16*2+9*2+8*3+7*3+4*3+3*4+2*4=127附:哈夫曼编码:规定哈夫曼树的左分支代表0,右分支代表1.从根结点N49到结点16,连续经历两次右分支,编码就是11从根结点N49到结点9,连续经历两次左分支,编码就是00从根结点N49到结点8,先经历右分支,再左分支,最后右分支,编码就是101如此类推,可以得出所有的结点的哈夫曼编码:权值16:11权值9:00权值8:101权值7:100权值4:010权值3:0111权值2:0110
哈夫曼编码运用到了哪种数据结构
哈夫曼编码运用到的数据结构是树型结构。
哈夫曼编码(HuffmanCoding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。
哈夫曼编码借助了数据结构当中的树型结构,在哈夫曼算法的支持下构造出一棵最优二叉树,我们把这类树命名为哈夫曼树。因此,准确地说,哈夫曼编码是在哈夫曼树的基础之上构造出来的一种编码形式,它的本身有着非常广泛的应用。
哈夫曼编码是唯一的吗
不唯一,同一层上的结点,位置是可以互换的。哈夫曼树不唯一,所以,编码也不唯一。
哈夫曼编码(HuffmanCoding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。
1951年,哈夫曼和他在MIT信息论的同学需要选择是完成学期报告还是期末考试。导师RobertM.Fano给他们的学期报告的题目是,寻找最有效的二进制编码。由于无法证明哪个已有编码是最有效的,哈夫曼放弃对已有编码的研究,转向新的探索,最终发现了基于有序频率二叉树编码的想法,并很快证明了这个方法是最有效的。由于这个算法,学生终于青出于蓝,超过了他那曾经和信息论创立者香农共同研究过类似编码的导师。哈夫曼使用自底向上的方法构建二叉树,避免了次优算法Shannon-Fano编码的最大弊端──自顶向下构建树。
1952年,DavidA.Huffman在麻省理工攻读博士时发表了《一种构建极小多余编码的方法》(AMethodfortheConstructionofMinimum-RedundancyCodes)一文,它一般就叫做Huffman编码。[1]
Huffman在1952年根据香农(Shannon)在1948年和范若(Fano)在1949年阐述的这种编码思想提出了一种不定长编码的方法,也称霍夫曼(Huffman)编码。霍夫曼编码的基本方法是先对图像数据扫描一遍,计算出各种像素出现的概率,按概率的大小指定不同长度的唯一码字,由此得到一张该图像的霍夫曼码表。编码后的图像数据记录的是每个像素的码字,而码字与实际像素值的对应关系记录在码表中。
赫夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就称Huffman编码。下面引证一个定理,该定理保证了按字符出现概率分配码长,可使平均码长最短。
关于哈夫曼树编码例题的内容到此结束,希望对大家有所帮助。