写在前面
哈夫曼树
主要内容
判定树:
在很多问题的处理过程中,需要进行大量的条件判断,这些判断结构的设计直接影响着程序的执行效率。
条件分支设置的有问题带来的效率是一样的。
我们称判定过程最优的二叉树为哈夫曼树,又称最优二叉树。
定义哈夫曼树之前先说明几个与哈夫曼树有关的概念:
路径: 树中一个结点到另一个结点之间的分支构成这两个结点之间的路径。
路径长度:路径上的分枝数目称作路径长度。
树的路径长度:从树根到每一个结点的路径长度之和。
结点的带权路径长度:在一棵树中,如果其结点上附带有一个权值,通常把该结点的路径长度与该结点上的权值之积称为该结点的带权路径长度(weighted path length)。
树的带权路径长度:如果树中每个叶子上都带有一个权值,则把树中所有叶子的带权路径长度之和称为树的带权路径长度。
其中带权路径长度最小的二叉树就称为哈夫曼树或最优二叉树
比如说一般将搜索到这个结点的概率作为结点的权值,或者将这个结点代表的事务出现的概率等等。
总之哈夫曼树的作用就是合理的设定这些结点的位置关系,使得权值越高的结点所经历的的路径越短。
这样达到的效果就是每个结点的平均带权路径长度最短。这样使得效率最高。