树与二叉树的应用

1 带权路径长度

从树的根到任意结点的路径长度与该结点的权值的乘积,称为该结点的带权路径长度。树中所有叶结点的带权路径长度之和称为该树的带权路径长度

2 哈夫曼树

在含有n个带权叶结点的二叉树中,其中带权路径长度(WPL)最小的二叉树称为哈夫曼树,也称最优二叉树

3 哈夫曼树的特点

  • 每个初始结点最终都称为叶结点,且权值越小的结点到根结点的路径长度越大
  • 构造过程中共新建了n-1个结点,因此哈夫曼树的结点总数2n-1
  • 每次构造都选择两棵树作为新结点的孩子,因此哈夫曼树中不存在度为1的结点

4 例题

设给定权集w={5,7,2,3,6,8,9},试构造关于w的一棵哈夫曼树,并求其加权路径长度WPL。

解:哈夫曼树的构造过程如下:

树与二叉树的应用_第1张图片

则其带权路径长度为:

WPL=(2+3)*4+(5+6+7)*3+(8+9)*2=108。

5 哈夫曼编码

(1)固定长度编码

在数据通信中,若对每个字符用相等长度的二进制位表示,称这种编码方式为固定长度编码。

(2)可变长度编码

若允许对不同字符用不等长的二进制位表示,则这种编码方式称为可变长度编码。

(3)前缀编码

若没有一个编码是另一个编码的前缀,则称这样的编码为前缀编码。

你可能感兴趣的:(算法,数据结构)