哈夫曼树
(一)基础知识
路径:从一个结点到另一个结点之间的分支序列。
路径长度:从一个结点到另一个结点所经过的分支数目。
结点的权:根据应用的需要可以给树的结点赋权值
带权路径长度:从根到该结点的路径长度与该结点权的乘积。
树的带权路径长度: 树中所有叶子结点的带权路径之和。
哈夫曼树:由n个带权叶子结点构成的所有二叉树中带权路径长度最短的二叉树。又叫最优二叉树。
(二)有数据为{ 22,10,46,17,13,110,20,15,34 }试构造一棵哈夫曼(Huffman树),并计算WPL。
先从其中选出两个最小的节点10 ,13,由他们的和组成他们的父节点 23。
然后,将23放回中序列中。参与其他的节点筛选。
重复上面的过程则可以完成构造树的过程。
结果如下:(结果有多种,但是WPL值是统一的。)
WPL=110*1+34*3+22*4+20*4+46*3+10*5+13*5+15*5+17*5=793
(三)字符串“alibaba”用哈夫曼编码来编码,则共有多少位?
a有3个,b有2个,l、i分别有一个。
所以,a的权值为3,b的权值为2,l的权值为1,i的权值为1。
构造哈夫曼树的结果为:
编码结果:
每个字母对应的编码
a 0
b 10
l 110
i 111
则alibaba对应的编码,总共需要13位
a 0
l 110
i 111
b 10
a 0
b 10
a 0
(四)二叉树转化为树
(五)树转化为二叉树