哈夫曼编码(Huffman Coding)是一种用于无损数据压缩的嫡编码(权编码)算法。
在哈夫曼树中,每个叶子节点都代表一个字符,而节点的权重通常代表字符的频率。在哈夫曼编码中,每个字符都会被赋予一个二进制编码。为了获得这些编码,我们可以对哈夫曼树进行遍历,从根节点开始,对每个路径进行编码。哈夫曼树的构造过程,限定了这棵树只存在度为0的叶子节点以及度为2的合并节点,对于编码过程,只有叶子结点才需要编码。根据二叉树的特性:度为0的节点(即叶子结点)个数n0与度为2的节点(即合并节点)个数n2之间,存在nO-n2=1的关系。再利用结点个数这个关系,nO+n2=*。可以求解出两者,求编码数实际上就是求叶子节点的个数,因为只有叶子节点才需要编码。