哈夫曼树的特点:
父节点是两个子节点的和。 利用最小堆来做,每次从最小堆中取出两个分别放到新树的左节点和右节点,然后父节点的值等于左右节点的权值和,再将此父节点插入到最小堆中。 因此哈夫曼树没有度(子节点)为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)
哈夫曼编码: