哈夫曼树
给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。
树节点间的边相关的数叫做权。从树中的一个节点到另一个节点之间的分支构成两个点之间的路径,路径上的分支数目称作路径长度。
例如,如下图:
从根结点100到C3的路径长度为4,也就是图中的根结点100到达C3的路径长度为4。
树的路径长度就是从树根到每一个节点的路径长度之和。二叉树的路径长度就为1+1+2+2+2+2+3+3+3+3+4+4+4+4=38。如果考虑带权的节点,节点的带权的路径长度就是从该节点到树根之间的路径长度乘该节点的权。数的带权路径长度就是所有叶子节点的带权路径长度之和。带权路径长度(WPL)最小的二叉树称作哈夫曼树。
如何构造哈夫曼树
下面我们以【3、4、5、6、10、25、36、11】为例来画出哈夫曼树(数字大小代表权重大小,越大的权重越大&#x