霍夫曼树是一种带权路径长度最短的二叉树,也叫最优二叉树。它是由一组权值{w1,w2,…,wn}构成的。根据输入的权值信息,计算出这些节点组成的二叉树。在霍夫曼树中,权值越大的节点离根节点越近,因此,霍夫曼树也被称为最优二叉树。在信息编码中应用广泛。
霍夫曼树可以用来解决每个字符编码位数不同的问题。我们经常会对一些数据进行压缩,比如常见的zip压缩。zip压缩是如何实现的呢?zip压缩首先会统计原始文件中每个字符出现的次数,然后构建出一棵霍夫曼树,根据霍夫曼树中每个字符对应的编码替换原始文件中的字符,这样,每个字符对应的编码位数是不同的,但是经过编码后的字符总位数却是最少的。由于字符编码的长度不固定,所以霍夫曼编码是一种前缀编码,每个编码只是叶子节点到根节点路径上的编码,没有编码是其他编码的前缀。