介绍
哈夫曼树,英文名 Huffman Tree, 又称赫夫曼树或最优二叉树。其主要用途是在于解决哈夫曼编码。哈夫曼编码则目的是在字节长度一定下,尽可能传输较多的信息。这也就是要让出现在明文中次数较多的字符对应较短的编码。这样即可达到在字节长度一定下,传输较多内容。
为了介绍哈夫曼树的特点,先介绍一些名词,路径长度和带权路径长度。
- 路径长度是指一个结点到另外一个结点之间分支的数目。
- 带权路径长度是指每个分支上有权值,一个结点到另外一个结点所有路径权值总和。
树的路径长度则为从根结点出发到每一个叶结点的路径长度总和。树的带权路径长度则是从根结点出发到每一个叶节点的带权路径长度总和,叫做WPL。
哈夫曼树拥有最小的树的带权路径长度,其每个叶节点包含字符信息。如下图,第三棵则为哈夫曼树。
![](http://jpkc.nwu.edu.cn/datastr/study_online/book/6/5_1.files/image013.gif)
如何建立哈夫曼树
建立哈夫曼树的算法思想: