码迷,mamicode.com
首页 > 其他好文 > 详细

最优二叉树(哈夫曼树)

时间:2015-03-04 12:53:28      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:

预备知识:

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

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

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

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

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

构造哈夫曼树的方法:

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

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

  技术分享

 

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

 

技术分享

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

技术分享

  第四步:

技术分享

  第五步:

技术分享

  第六步:

技术分享

  第七步:

技术分享

 

哈夫曼编码:

技术分享

 

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

 

最优二叉树(哈夫曼树)

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!