最优二叉树(哈夫曼树)

预备知识:

  路径:从树中一个结点到另一个结点之间的通路,路径上的分支数目成为路径长度;

    树的路径长度:从树根到每一个叶子之间的路径长度之和;

  结点的带权路径长度:从该结点到树根之间的路径长度与该结点权值的乘积;

  树的带权路径长度:所有叶子结点的带权路径长度之和;

  结构相同的任意两颗二叉树,由于他们的叶子结点权值可能不同,所以他们的带权路径长度也会不同;哈夫曼树是指带权路径长度最小的二叉树;

构造哈夫曼树的方法:

  假设有一组权值{5,29,7,8,14,23,3,11},下面我们将利用这组权值演示构造哈夫曼树的过程。

  第一步:以这8个权值座位根节点的权值构造具有8棵树的森林;

  

  第二步:从中选择两个根的权值最小的树3,5座位左右子树构成一棵新树,新树根节点的权值为3+5,并将这两棵树从森林中删除,并将新树添加进去;

  第三步:重复第二步过程,直到森林中只有一棵树为止,此处选择7,8;

  第四步:

  第五步:

  第六步:

  第七步:

哈夫曼编码:

哈夫曼树中只存在叶子节点和度为2的结点。叶子节点的个数=度为2的节点数+1。

原文地址:https://www.cnblogs.com/ImaY/p/4309863.html