哈夫曼树的带权路径长度最短。
特点:
- 满二叉树不一定是哈夫曼树
- 哈夫曼树种权越大的叶子离根越近
- 具有相同带权结点的哈夫曼树不唯一
- 包含n个叶子结点的哈夫曼树共有2n-1个结点
- 哈夫曼树的结点的度数为0或2,没有度为1的结点
构造哈夫曼树方法(口诀)
- 构造森林全是根
- 选用两小造新树
- 删除两小添新人
- 重复2,3剩单根
总结:
1.在哈夫曼算法中,初始时有n棵二叉树,要经过n-1次合并最终形成哈夫曼树。
2.经过n-1次合并产生n-1个新结点,且这n-1个新结点都是具有两个孩子的分支节点。
可见:哈夫曼树种共有n+n-1=2n-1个结点,且其所有的分支节点的度均不为1。
哈夫曼树构造算法的实现
顺序存储结构
typedef struct{
int weight;
int parent,lch,rch;
}HTNode,*HuffmanTree;
void CreatHuffman Tree(HuffmanTree HT,

哈夫曼树是一种特殊的二叉树,以带权路径长度最短为特点。它不是满二叉树的唯一形式,权值大的叶子节点更靠近根节点。哈夫曼树的构造过程涉及多次合并,总节点数为2n-1,所有分支节点度数为2。哈夫曼编码是其典型应用之一。
最低0.47元/天 解锁文章
3822





