数据结构之哈夫曼

哈夫曼树的特点: 

父节点是两个子节点的和。 利用最小堆来做,每次从最小堆中取出两个分别放到新树的左节点和右节点,然后父节点的值等于左右节点的权值和,再将此父节点插入到最小堆中。 因此哈夫曼树没有度(子节点)为1的节点,所以由上图可知,

由于任何非空二叉树,若N0表示叶节点个数,n2是度为2的非叶节点个数,那么两者满足关系 n0 = n2+1,解析如下:

  n0+n1+n2-1 = 0*n0 + 1*n1+2*n2               ≈      n0+n2-1 = 2*n2       ≈         n0-1 = n2           ≈               n0 = n2+1

(各个节点的边,连接每个节点的边只有一条,根节点没有,所以-1) = (节点延伸出来的边数 n0 0个边 ,n1 1个边,n2 2个边)

哈夫曼树总节点为:n0+n2  =  2n2-1(没有n1 而n0 = n2+1)

哈夫曼编码:

猜你喜欢

转载自blog.csdn.net/u013245479/article/details/84257908