Huffman Tree
哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。
即Σ树叶权值×树叶深度 最小的树
应用:
压缩文件
构造:
首先把n个元素视为n棵树的森林,每次选出森林里最小的两颗树,合并为一棵新的树。
重复操作,直到只剩下1棵树时,这棵树就是哈夫曼树
理解:
一开始有n个单节点的树
由于哈夫曼树最深层结构一定如下
两个O中分别为最小和次小的元素
所以我们选出最小的两个元素
使它们生根(这一定是最终结果的子树)
这个操作也意味着它们的深度+1
这个树X的性质和O是一样的
也可以和其他O生根,每次深度+1,有自身权值(Σ下方O权值)
我们可以把X看成新的O
然后问题回到了一开始的状态
同样的操作,直到剩下最后一棵树