标签:
最优二叉树,又称为赫夫曼树,是一类带权路径长度最短的树。
下面介绍一下基本概念,从树中的一个结点到另外一个结点之间的分支构成这两个结点之间的路径,路径上的分支数目称为路径长度。树的路径长度是从树根到每一个结点的路径长度之和。树的带权路径长度为树中所有叶子结点的带权路径长度之和。其中带权路径长度最小的二叉树·称作最优二叉树或赫夫曼树。
举个例子,下图三个二叉树:
他们的带权路径长度分别为:
7*2+5*2+2*2+4*2=36
7*3+5*3+4*2+2*1=46
7*1+5*2+2*3+4*3=35
其中以c树最短,说明c树就是赫夫曼树。
那么赫夫曼树有什么作用呢?这里举一个小例子。就是一个最简单的百分制转五分制的程序,只需要利用条件语句就能执行完成。比如以下代码:
function getValue(a){ var b;//五分制等级 if(a<60) b='bad'; else if(a<70) b='pass'; else if(a<80) b='general'; else if(a<90) b='good'; else b='excellent'; document.write(b); }
则80%的数据需要比较三次或三次以上才能得出结果。所以我们应该进行如下修改:
这样就可以大大的减小比较次数了。
那么如何构建赫夫曼树呢?构建步骤如下图,相信聪明人一看就懂了:
标签:
原文地址:http://blog.csdn.net/mevicky/article/details/45829459