赫夫曼树
哈夫曼树节点个数一定是奇数
假设哈夫曼树是二叉的话,则度为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对应的即是不同的编码。
至于满二叉树当然也是正则二叉树的特例
浙公网安备 33010602011771号