zoukankan      html  css  js  c++  java
  • Data Structure 之 最优二叉树

          给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

          最优二叉树的总结点数为 2n - 1

    1、路径和路径长度
          在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长
    为L-1。
    2、结点的权及带权路径长度
          若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。
    3、树的带权路径长度
          树的带权路径长度规定为所有叶子结点的带权路径长度之和,记为WPL。

    构造最优二叉树的哈夫曼算法如下:
    (1)根据给定的n个权值{wi,w2,…,wn},构成n棵二叉树的集合T2,…, Tn},其中每棵二叉树乃中只有一个带权为%的根结点,其左右子树均空。
    (2)在F中选取两棵权值最小的二叉树作为左、右子树构造一棵新的二叉树,置新 构造二叉树的根结点的权值为其左、右子树根结点的权值之和。
    (3)从F中删除这两棵树,同时将新得到的二叉树加入到F中。
    (4)重复(2)、(3),直到F中只含一棵树时为止。这棵树便是最优二叉树(哈夫曼树)。

    例如给定权值集合{8,5,2,6}根据题中给出的权值集合,构造哈夫曼树的过程如下图所示。

      

  • 相关阅读:
    跨域通信
    Http协议-报文
    从快递公司作业模式看网络通信
    xx.exe 中的 0x7c92e4df 处最可能的异常: 0xC0000008: An invalid handle was specified
    [wp8游戏] cocos2d-x v2.2 + VS2013 环境搭建
    wp加载本地HTML(附带图片,CSS,JS)
    谈谈.NET程序集(一)
    [读书心得] .NET中 类型,对象,线程栈,托管堆在运行时的关系
    矩估计与最大似然估计
    WP8开发札记(二)让程序支持锁屏运行
  • 原文地址:https://www.cnblogs.com/xinaixia/p/4424746.html
Copyright © 2011-2022 走看看