哈夫曼树(理论)

路径长度:从树中一个节点到另一个节点需要经过的分支个数。
树的路径长度:从根节点出发,到每一个叶子节点的路径长度之和。
带权路径长度:从根节点出发,到每一个叶子节点的路径长度乘上叶子节点的权重之和。

哈夫曼树就是带权路径长度最小的二叉树。那么哈夫曼数有什么优点呢?由于哈夫曼树是带权路径长度最小的二叉树,意味着所有权重大的叶子节点一定在树的上层。那么在比较过程中(每一个节点就是一次比较),大部分数据只需要经过几次比较就可以得出结果,只有少数数据需要比较多次,这样可以明显减少比较次数。

那么如果构造出一颗哈夫曼树?
(1)把所有有权值的叶子节点按照从小到大的顺序排列。
(2)将权值最小的两个叶子节点取出来构成一颗二叉树,权值最小的为二叉树的左孩子,将这颗二叉树看成一个新的叶子节点,权值为左右孩子权值相加之和,重新加入队列排序。
(3)不断重复(2)的过程直到队列中的节点个数为1之时,我们便得到了一颗哈夫曼树。

你可能感兴趣的:(哈夫曼树(理论))