当前位置: 首页 > news >正文

政务网站开发理念焊工培训ppt课件

政务网站开发理念,焊工培训ppt课件,怎么查网站后台地址,专业酒店设计网站建设文章目录 数据结构—基础知识:哈夫曼树哈夫曼树的基本概念哈夫曼树的构造算法哈夫曼树的构造过程哈夫曼算法的实现算法:构造哈夫曼树 数据结构—基础知识:哈夫曼树 哈夫曼树的基本概念 哈夫曼(Huffman)树又称最优树&…

文章目录

  • 数据结构—基础知识:哈夫曼树
    • 哈夫曼树的基本概念
    • 哈夫曼树的构造算法
      • 哈夫曼树的构造过程
      • 哈夫曼算法的实现
      • 算法:构造哈夫曼树

数据结构—基础知识:哈夫曼树

哈夫曼树的基本概念

哈夫曼(Huffman)树又称最优树,是一类带权路径长度最短的树,在实际中有广泛的用途。哈夫曼树的定义,涉及路径、路径长度、权等概念,下面先给出这些概念的定义,然后再介绍哈夫曼树

  1. 路径:从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径。
  2. 路径长度:路径上的分支数目称作路径长度。
  3. 树的路径长度:从树根到每一结点的路径长度之和。
  4. :赋予某个实体的一个量,是对实体的某个或某些属性的数值化描述。在数据结构中,实体有结点(元素)和边(关系)两大类,所以对应有结点权利边权结点权或边权具体代表什么意义,由具体情况决定。如果在一棵树中的结点上带有权值,则对应的就有带权树等概念。
  5. 结点的带权路径长度:从该结点到树根之间的路径长度与结点上权的乘积。
  6. 树的带权路径长度:树中所有叶子结点的带权路径长度之和,通常记作WPL。
  7. 哈夫曼树:设有m个权值{w1,w2,…wm},可以构造一棵含n个叶子结点的二叉树,每个叶子结点的权为w,则其中带权路径长度WPL最小的一叉树称做最优二叉树或哈夫曼树。

例如,下图中所示的3棵二叉树,都含4个叶子结点a、b、c、d,分别带权7、5、2、4,他们的带权路径长度分别为

哈夫曼树的构造算法

哈夫曼树的构造过程

  1. 根据给定的n个权值{w1,w₂,…,wn},构造n棵只有根结点的二叉树,这n棵二叉树构成一个森林F。
  2. 在森林F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,且置新的二叉树的根结点的权值为其左、右子树上根结点的权值之和。(选用两小造新树
  3. 在森林F中删除这两棵树,同时将新得到的二叉树加人F中。(删除两小添新人
  4. 重复(2)和(3),直到F只含一棵树为止。这棵树便是哈夫曼树。(重复(2)(3)剩单根

在构造哈夫曼树时,首先选择权小的,这样保证权大的离根较近,这样一来,在计算树的带权路径长度时,自然会得到最小带权路径长度,这种生成算法是一种典型的贪心法。

注:哈夫曼树的结点的度数为0或2,没有度为1的结点。

哈夫曼算法的实现

//-------哈夫曼树的存储表示-------
typedef struct{int weight;//结点的权值int parent,lchild,rchild;//结点的双亲、左孩子、右孩子的下标
}HTNode,*HuffmanTree;//动态分配数组存储哈夫曼树
权值双亲左孩子右孩子
weightparentlchildrchild

包含n棵树的森林经过n-1次合并才能形成哈夫曼树,共产生n-1个新结点

算法:构造哈夫曼树

【算法步骤】

  1. 初始化:首先动态申请2n个单元;然后循环 2n-1次,从1号单元开始,依次将1至2n-1所有单元中的双亲、左孩子、右孩子的下标都初始化为0;最后再循环n次,输入前n个单元中叶子结点的权值。
  2. 创建树:循环n-1次,通过n-1次的选择、删除与合并来创建哈夫曼树。选择是从当前森林中选择双亲为0且权值最小的两个树根结点s1和 s2;删除是指将结点s1 和s2白的双亲改为非 0;合并就是将s1 和 s2的权值和作为一个新结点的权值依次存入到数组的第n+1之后的单元中,同时记录这个新结点左孩子的下标为s1,右孩子的下标为 s2。
void CreateHuffmanTree(HuffmanTree &HT,int n)
{if(n<=1) return;m=2*n-1;HT=new HTNode[m+1];//0号单元未用,所以需要动态分配m+1个单元,HT[m]表示根结点for(i=1;i<=m,++1)//将1~m号单元中的双亲、左孩子,右孩子的下标都初始化为0{HT[i].parnt=0;HT[i].lchild=0;HT[i].rchild=0;}for(i=1;i<=n,++1)//输入前n个单元中叶子结点的权值cin>>HT[i].weight;
/*-----------初始化工作结束,下面开始创建哈夫曼树-----------*/for(i=n+1;i<=n;++1){//通过n-1次的选择、删除、合并来创建哈夫曼树Select(HT,i-1,s1,s2);//在HT[k](1≤k≤i-1)中选择两个其双亲域0且权值最小的结点,并返回它们在HT中的序号s1和s2(最小结点下标)HT[s1].parent=i;HT[s2].parent=i;//修改HT[s1][s2]的parent值HT[i].lchild=s1;HT[i].rchild=s2;//s1,s2分别作为i的左右孩子HT[i].weight=HT[s1].weight+HT[s2].weight;//i的权值为左右孩子之和}
}

已知w=(5,29,7,8,14,23,3,11),构造一棵哈夫曼树,计算树的带权路径长度,并给出构造过程中存储结构HT的初始状态和终结状态。

HT初态
结点iweightparentlchildrchild
15000
229000
37000
48000
514000
623000
73000
811000
9-000
10-000
11-000
12-000
13-000
14-000
15-000
HT的终态
结点iweightparentlchildrchild
15900
2291400
371000
481000
5141200
6231300
73900
8111100
981171
10151234
11191398
122914510
134215116
145815212
1510001314

http://www.hkea.cn/news/491846/

相关文章:

  • 单位网站建设论文怎么做竞价托管
  • 建筑公司网站有哪些谈谈自己对市场营销的理解
  • 做ppt音乐怎么下载网站企业培训课程有哪些
  • magento网站建设网站优化排名软件网站
  • 做生鲜食品最好的网站网络推广及销售
  • 销售管理系统需求分析长沙seo代理
  • 站长网站查询深圳百度关键字优化
  • 用net语言做网站平台好不好企业培训师资格证报考2022
  • 成都定制网站设竞价推广遇到恶意点击怎么办
  • 制作视频网站建设友链交易网
  • 做外贸是不是要有网站腾讯企点app下载安装
  • 网站开发快递文件国外网站怎么推广
  • 网站和搜索引擎站长论坛
  • 做违法网站会怎样外贸独立站怎么建站
  • 云主机建网站教程深圳全网推互联科技有限公司
  • 做网站赚50万谷歌搜索引擎363入口
  • 台州网站设计外包网页制作公司排名
  • 网站建设投标文件范本亚马逊提升关键词排名的方法
  • 学做网站需要多长时间免费推广平台排行
  • wordpress运行php 404360优化大师下载
  • seo排名网站 优帮云线上推广的三种方式
  • 平凉哪有做网站的百度推广登录入口官网网
  • 娄底网站优化自建网站平台有哪些
  • 做网站需要多少兆空间wix网站制作
  • 哪些网站教做生物实验今日新闻联播
  • 铜川市住房和城乡建设局网站信息流广告哪个平台好
  • 太原市建设交易中心网站首页百度手机助手app安卓版官方下载
  • 昆山网站建设网站建设郑州网络推广哪个好
  • 瑜伽网站设计国外推广网站
  • 什么网站做国外批发百度推广自己怎么做