iBit

导航

赫夫曼树

哈夫曼树节点个数一定是奇数
假设哈夫曼树是二叉的话,则度为0的结点个数为N,度为2的结点个数为N-1,则结点总数为2N-1。


哈夫曼树的形态不是唯一的,但是它的带权路径长度WPL是唯一的。
如:3,5,6
可以构造出
14
8 6
3 5

14
6 8
3 5
这两种形态,所以哈夫曼树形态不唯一


哈夫曼树不可能存在度为1的结点
生成哈夫曼树的第一步就是在结点集合中找到两个权值最小的结点,然后生成一棵二叉树
树中任意节点的权值一定大于自己的左右孩子,但不能保证一定不小于其他下一任结点的权值。

设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有()个空指针域。
  • 1

哈夫曼树不存在入度为1 的结点,所以n0=n2+1
设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有(2m)个空指针域; n0=m
树的二叉链表存储结构就是孩子-兄弟表示法。
孩子-兄弟表示法:数据域是结点,如A; 有两个指针域:1)指向长子 2)指向右兄弟
哈夫曼树的孩子-兄弟表示法的空指针域有三种情况:(1)叶子结点长子域一定为空m个(2)根节点的右兄弟域一定为空 1个 (3)除去根节点外,哈夫曼树的其余结点个数中有一半结点的右兄弟域为空 (n总-1)/2=n2
所以空指针域=m+1+n2=2m

哈夫曼树权值结点的父结点实际上是没有值的



一棵哈夫曼树共有215个结点,对其进行哈夫曼编码,共能得到()个不同的码字
  • 1
  • 2

哈夫曼树并不是满二叉树,是正则二叉树(也叫正规二叉树),即其中只有度为0和度为2的结点
因为n0 = n2 + 1,n = n0 + n2; 所以 n = 2n0 - 1,即n0 = (n + 1) / 2;叶子结点n0对应的即是不同的编码。
至于满二叉树当然也是正则二叉树的特例

posted on 2018-06-29 09:46  iBit  阅读(904)  评论(0)    收藏  举报