跳到主要内容

13、数据结构和算法 - 实战:赫夫曼树

赫夫曼树

定义

把两棵二叉树简化成叶子结点带权的二叉树(树结点间的连线相关的数叫做权)

结点的路径长度:从根结点到该结点的路径上的连接数
树的路径长度:树中每个叶子结点的路径长度之和
结点带权路径长度:结点的路径长度与结点权值的乘积
树的带权路径长度:树中所有叶子结点的带权路径长度之和。

 

构造过程

1、 在森林中选出两棵根结点的权值最小的二叉树;
2、 合并选出的两个二叉树,新增加一个结点作为他俩的根,权值为二者之和;
3、 在森林里选出两棵根结点的权值最小的二叉树,进行合并;
4、 操作同2,重复3-2-3-2.;

名词解释

定长编码:像ASCⅡ码
变长编码:单个编码的长度不一致,可以根据整体出现频率来调节。
前缀码:没有任何码字是其他码字的前缀

赫夫曼编码

 
左子树用0来表示,右子树用1表示。圆圈里是结点的权值。
创建树之前,先创建一个具有优先级的队列,表示出现的次数,也就是权值。

代码可能没法放上来了,因为视频里没给完全