霍夫曼树(Huffman Tree)
简介
霍夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的路径长度是从树根到每一结点的路径长度之和,记为WPL=(W1L1+W2L2+W3L3+…+WnLn),N个权值Wi(i=1,2,…n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为Li(i=1,2,…n)。可以证明霍夫曼树的WPL是最小的。
- 叶子节点带权路径:叶子节点的权乘以路径
- 树带权路径长度(WPL):叶子节点带权路径总和
实现思路
-
数据排序。
-
将最小的两个数组成二叉树,原数据的最小两个数删除,替换成改两个小数的和。
-
重复1,2步操作,直到只剩两个数,最终结果如下。