哈夫曼树
- 贪心思想
- 压缩编码的方法
用于构造路径权值总和最小的二叉树,解决数据传输的最优化问题
原理: 每次选择值最小的两个点合成新的树(贪心思想),将全部结点都合并,最终得出来的树就是权值和最小的二叉树
操作要点:
- 结点数值左小右大
- 先将所有结点值从小到大排序
- 每次选择值最小的两个结点,合并成一棵新的二叉树,根结点的值为两个结点相加
- 根结点作为新结点重新进入序列排序,与其他未合并的结点一起,重新组合
举个例子:
同值异构(与化学的同分异构体不同): 若构建的树长得不一样,但是各点权值和相同,则可以任意选择一种结构,不影响最终的结果,而化学的不同的同分异构体是会影响化学性质的
在电报中怎么实现编码?
每个字符作为结点,将每个字符出现的频率作为结点权值,以这个构建一棵哈夫曼树,每棵子树左分支为0,右分支为1,从根结点到叶子结点经过的路径分支组成的01序列就是对应字符的编码