小白的数据结构与算法学习笔记(二十四)----哈夫曼树的基本介绍
一、基本概念
1、结点的路径长度:从根结点到该结点的路径上的连接数
2、树的路径长度:树中每个叶子结点的路径长度之和
3、结点带权路径长度:结点的路径长度与结点权值的乘积
4、树的带权路径长度(WPL:Weighted Path Length):树中所有叶子结点带权路径长度之和,WPL越小,二叉树性能越优
5、最优二叉树:假设有n个权值{w1,w2,w3,······wn},构造一棵有n个叶子结点的二叉树,每个叶子结点带权值为wi,则其中WPL最小的二叉树称为最优二叉树
6、哈夫曼树:就是最优二叉树
二、哈夫曼树的构造过程
1、在森林中选出两棵根结点权值最小的二叉树,小的放左边,大的放右边
2、合并两棵选出的二叉树,增加一个新结点(不是森林中的待选结点!!而是新加的一个原本无权值的结点)作为新二叉树的根,权值为左右孩子权值之和
3、再从森林中剩余结点选出权值最小的二叉树,放在新结点左边,重复第2步
4、重复以上3步
三、哈夫曼编码与哈夫曼树的关系
哈夫曼树向左的连接都是0,向右的连接都是1,通过0与1的组合会对应唯一一条哈夫曼树中的路径指向的叶子结点,例如:A对应1011110,B对应1011111
BY ZJQ