哈夫曼树和霍夫曼树有什么区别?
区别是哈夫曼树是一名NBA主教练,而霍夫曼树是欧洲篮球主教练。他们俩不在一个联赛中,也不同国籍。哈夫曼树是美国国籍,霍夫曼树是法国国籍。哈夫曼树,身高 1米75,体重 52kg,目前是奇才队的助理教练。霍夫曼树,身高 1米76,体重58kg,目前是巴伦西亚队的主教练。
延伸阅读
霍夫曼树建立时应该注意什么?
假设有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个字符得到的哈夫曼树来进行的,编码和解码使用相同的初始哈夫曼树,每处理完一个字符,编码和解码使用相同的方法修改哈夫曼树,所以没有必要为解码而保存哈夫曼树的信息。编码和解码一个字符所需的时间与该字符的编码长度成正比,所以动态哈夫曼编码可实时进行。
哈夫曼树是唯一的吗?
不可以。因为没有限定左右子树,并且有权值重复时,可能树的高度都不唯一,唯一的只是 带权路径长度之和最小。 哈夫曼树(霍夫曼树)又称为最优树. 1、路径和路径长度 在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。
若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。 2、结点的权及带权路径长度 若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。 3、树的带权路径长度 树的带权路径长度规定为所有叶子结点的带权路径长度之和,记为WPL。
霍夫曼树的结点个数不能是偶数?
是的,霍夫曼树的结点个数不是偶数。
霍夫曼树又称最优二叉树,是一种带权路径长度最短的特殊二叉树。
根据霍夫曼树的构造规则我们知道,它最初可视作若干棵只有一个带权叶子结点的树,然后不断选出两个根结点的权值最小的树合并,并为它们添加一个共同的父结点,直到只有一颗树。因此霍夫曼树中中只有两种结点:叶子(最初的离散带权结点)、度为2的分支结点(在合并过程中不断添加的父结点),绝不会存在度为1的分支结点。
而根据二叉树的一个基本特点,度为0的结点总是比度为2的结点多一个,设度为2的结点有n个,那么霍夫曼树的总结点就是2n+1个,n为自然数。显然2n+1是奇数,因此霍夫曼树的结点个数不可能是偶数。