哈夫曼树是唯一的吗 哈夫曼树是唯一的吗为什么

哈夫曼树是唯一的吗?

不可以。因为没有限定左右子树,并且有权值重复时,可能树的高度都不唯一,唯一的只是 带权路径长度之和最小。 哈夫曼树(霍夫曼树)又称为最优树. 1、路径和路径长度 在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。

若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。 2、结点的权及带权路径长度 若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。 3、树的带权路径长度 树的带权路径长度规定为所有叶子结点的带权路径长度之和,记为WPL。

在哈夫曼树中,权值相同的叶结点都在同一层上为什么错?

在哈夫曼树中,如果所有叶子权值相同,且叶子个数是2^n(n≥1),那么叶结点都在同一层上,否则叶子结点不会都在同一层。

我们举个简单的反例,就能驳斥题目的论断了。

假如有3个权值为1的叶子a、b、c要构建一棵哈夫曼树。根据其构造规则,先把权值最小的a、b凑一起,为它们添加父结点d,再为d、c添加父结点e。显然,在这棵哈夫曼树中,虽然a、b、c权值一样,但a、b在第三层,而c在第二层。因此题目表述不再成立。

14个值组成哈夫曼树共有多少节点?

14个带权叶子组成的哈夫曼树,共有27个结点。

根据哈夫曼树的构造规则,最开始这14个结点全是离散的,可看为14棵单独的树。不断找到权值最小的两棵树,添加一个度为2的分支结点把它们组合起来,直到最后只有一棵树。

因此对于哈夫曼树,只有度为0的叶子和度为2的结点,且二叉树中总是度为0的结点比度为2的结点多一个,因此14个叶子结点的哈夫曼树有13个度为2的结点,它的总结点数是14+13=27个。

具有n个叶子结点的哈夫曼树共有多少个分支?

哈夫曼树是一种带权路径最小的二叉树,根据它的构造规则,我们知道它的叶子都是若干初始具有一定权值的离散结点,不断把两个最小权值的结点或子树组合在一起,赋予它们一个新的结点作为它们的父结点。因此,从第一步开始,每组合一次,就得到一个分支结点,那么n个结点需要组合n-1次,得到n-1个分支结点。

答:n个叶子结点的哈夫曼树共有n-1个分支。

哈夫曼树和霍夫曼树有什么区别?

区别是哈夫曼树是一名NBA主教练,而霍夫曼树是欧洲篮球主教练。他们俩不在一个联赛中,也不同国籍。哈夫曼树是美国国籍,霍夫曼树是法国国籍。哈夫曼树,身高 1米75,体重 52kg,目前是奇才队的助理教练。霍夫曼树,身高 1米76,体重58kg,目前是巴伦西亚队的主教练。

如果给定权值总数有N个,则其哈夫曼树的结点总数为多少?

  给定权值总数有N个,则其哈夫曼树的结点总数为2*N-1;  给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(HuffmanTree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

二叉树哈夫曼树形状唯一吗?

二叉树哈夫曼树形状不唯一。

哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。从哈夫曼树的构造方式就知道,它的形状不是唯一的。我们举例说明。

比如有权值分别为1、2、2、3的四个结点要构建哈夫曼树。先选择最小的1和2,为它们分配父结点a。1可以是a的左子结点也可以是右子结点,2亦然,因此从第一步,树形状就不唯一了。a的权值是3,那么,另一个权值为2的结点可以和a组合,也可以和另一个权值为3的结点组合,树形状再次多了一种可能。

综上,二叉树哈夫曼树形状不唯一。

{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

如何建立哈夫曼树?

假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 k1、k2、…、kn,则哈夫曼树的构造规则为:

(1) 将k1、k2、…,kn看成是有n 棵树的森林(每棵树仅有一个结点);

(2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;

(3)从森林中删除选取的两棵树,并将新树加入森林;

(4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。哈夫曼静态编码:它对需要编码的数据进行两遍扫描:

第一遍统计原数据中各字符出现的频率,利用得到的频率值创建哈夫曼树,并必须把树的信息保存起来,即把字符0-255(2^8=256)的频率值以2-4BYTES的长度顺序存储起来,(用4Bytes的长度存储频率值,频率值的表示范围为0–2^32-1,这已足够表示大文件中字符出现的频率了)以便解压时创建同样的哈夫曼树进行解压;

第二遍则根据第一遍扫描得到的哈夫曼树进行编码,并把编码后得到的码字存储起来。哈夫曼动态编码:动态哈夫曼编码使用一棵动态变化的哈夫曼树,对第t+1个字符的编码是根据原始数据中前t个字符得到的哈夫曼树来进行的,编码和解码使用相同的初始哈夫曼树,每处理完一个字符,编码和解码使用相同的方法修改哈夫曼树,所以没有必要为解码而保存哈夫曼树的信息。

编码和解码一个字符所需的时间与该字符的编码长度成正比,所以动态哈夫曼编码可实时进行。

版权声明

您可能感兴趣

返回顶部