当前位置:首页 > 教育综合 > 正文

已知五个节点的权值是4,6,1,13,7,画出哈夫曼树并求出其带权路径长度

已知节点abcde的权值分别为12322,请构造以此五个节点作为叶子的哈夫曼树

哈夫曼树

  1. 10

    / \

  2. 4 6

    / \ / \

  3. 2 2 3 3

    / \

  4. 1 2

给出5个权值{1,2,5,6,7},请画出所构成的哈夫曼树

五个权值是12567
(1)从小到大排序12567(这是有序序列)
(2)每次提取最小的两个结点,取结点1和结点2,组成新结点N3,其权值=1+2=3,
取数值较小的结点作为左分支,结点1作为左分支,而结点2就作为右分支.
(3)将新结点N3放入有序序列,保持从小到大排序:
N3567
(4)重复步骤(2),提取最小的两个结点,N3与结点5组成新结点N8,其权值=3+5=8,
N3数值较小,作为左分支,而结点5就作为右分支.
(5)将新结点N8放入有序序列,保持从小到大排序:
67N8
(6)重复步骤(2),提取最小的两个结点,结点6与结点7组成新结点N13,其权值=6+7=13,
结点6的数值较小,作为左分支,结点7就作为右分支.
(7)将新结点N13放入有序序列,保持从小到大排序:
N8N13
(8)重复步骤(2),提取剩下的两个结点,N8与N13组成新结点N21,其权值=8+13=21,
数值较小的N8作为左分支,N13就作为右分支.
最后得到"哈夫曼树":
N21
/\
N8N13
/\/\
N3567
/\
12
哈夫曼编码:
规定哈夫曼树的左分支代表0,右分支代表1.
得出所有结点的哈夫曼编码:
权值7:11
权值6:10
权值5:01
权值2:001
权值1:000
哈夫曼树的带权路径长度是:
7*2+6*2+5*2+2*3+1*3=45

{4,5,6,7,8}作为权值构造Huffman树,带权路径长度?

先是4和5合并为9,再就是6和7合并为13,接着是8和9合并为17,最后是13和17合并为30,所以WPL = (6+7+8)*2 + (4+ 5)*3= 69。

例如:

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

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

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

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

扩展资料:

哈夫曼动态编码:动态哈夫曼编码使用一棵动态变化的哈夫曼树,对第t+1个字符的编码是根据原始数据中前t个字符得到的哈夫曼树来进行的,编码和解码使用相同的初始哈夫曼树,每处理完一个字符,编码和解码使用相同的方法修改哈夫曼树;

所以没有必要为解码而保存哈夫曼树的信息。编码和解码一个字符所需的时间与该字符的编码长度成正比,所以动态哈夫曼编码可实时进行。

参考资料来源:百度百科-哈夫曼树

画出哈夫曼树计算带权路径长度

在权为wl,w2,…,wn的n个叶子所构成的所有二叉树中,带权路径长度最小(即代价最小)的二叉树称为最优二叉树或哈夫曼树。【例】给定4个叶子结点a,

数据结构与算法:以数据集{4,5,6,7,10,12,18}为结点权值所构造的哈夫曼树,其带权路径长度为?

带全路径长度:(4+5)*4+(6+7)*3+10*3+12*2+18*2=165

望采纳!

展开全文阅读