【问题描述】
 已知输入一串正整数,正整数之间用空格键分开,请建立一个哈夫曼树,以输入的数字为叶节点,求这棵哈夫曼树的带权路径长度。

【输入形式】
 首先输入正整数的个数,然后接下来为接下来的正整数,正整数个数不超过10个

【输出形式】
 输出相应的权值

【样例输入】
 5 4 5 6 7 8

【样例输出】
 69

#include <stdio.h>
#include <stdlib.h>/***@ziyif*/typedef int QElemType;
typedef struct Qnode{QElemType data;struct Qnode *next;
}QNode,*QueuePtr;typedef struct{QueuePtr front;//队头指针QueuePtr rear;//队尾指针
}LinkQueue;void InitQueue(LinkQueue *Q);
void EnQueue(LinkQueue *Q,QElemType e);
QElemType DeQueue(LinkQueue *Q);
int GetLength(LinkQueue *Q);int main()
{LinkQueue Q;InitQueue(&Q);int N;scanf("%d",&N);int a[N];int length;int i,j,k;int temp;for(i=0;i<N;i++){scanf("%d",&a[i]);}//sortfor(i=0;i<N-1;i++){k=i;for(j=i+1;j<N;j++){if(a[j]<a[k]){k=j;}}if(k!=i){temp=a[k];a[k]=a[i];a[i]=temp;}}//push Queuefor(i=0;i<N;i++){EnQueue(&Q,a[i]);}length=GetLength(&Q);int sum=0;int num=0;while(length>1){int a,b;a=DeQueue(&Q);//printf("a=%d\n",a);length=GetLength(&Q);//printf("%d\n",length);b=DeQueue(&Q);//printf("b=%d\n",b);length=GetLength(&Q);//printf("%d\n",length);num=a+b;sum+=num;//printf("sum=%d\n",sum);//printf("num=%d\n",num);EnQueue(&Q,num);length=GetLength(&Q);}printf("%d",sum);return 0;
}void InitQueue(LinkQueue *Q){Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));if(!Q->front){printf("OVERFLOW");exit(0);}Q->front->next=NULL;
}void EnQueue(LinkQueue *Q,QElemType e){QNode *p=(QueuePtr)malloc(sizeof(QNode));if(!p){printf("OVERFLOW");exit(0);}p->data=e;p->next=NULL;Q->rear->next=p;Q->rear=p;}QElemType DeQueue(LinkQueue *Q){if(Q->front==Q->rear){printf("ERROR");exit(0);}QElemType e;QNode *p=Q->front->next;e=p->data;Q->front->next=p->next;if(Q->rear==p){Q->rear=Q->front;}free(p);return e;
}int GetLength(LinkQueue *Q){int length=0;QNode *p;p=Q->front;while(p->next){p=p->next;length++;}return length;
}

求节点的哈夫曼的带权路径长度相关推荐

  1. 哈夫曼树带权路径长度c语言,【哈夫曼树】求结点的哈夫曼的带权路径长度

    本文用C++采用顺序存储实现求哈夫曼树(即最小生成树)的带权路径长度 努力 下面来了解一下哈夫曼树的构造以及如何求带权路径长度: 哈夫曼树为带权路径长度最小的树 哈夫曼树 哈夫曼树的顺序存储 [问题描 ...

  2. 带权路径长度wpl值_哈夫曼树带权路径长度怎么计算

    哈夫曼树的带权路径长度是什么? 1.树的路径长度 树的路径长度是从树根到树中每一结点的路径长度之和.在结点数目相同的二叉树中,完全二叉树的路径长度最短. 2.树的带权路径长度(Weighted Pat ...

  3. 哈夫曼树带权路径长度

    一. 长什么样? 左边是普通树,右边是哈夫曼树 图a: WPL=5*2+7*2+2*2+13*2=54 图b: WPL=5*3+2*3+7*2+13*1=48 可见,图b的带权路径长度较小,我们可以证 ...

  4. 哈夫曼树带权路径长度求解(C语言实现)

    题目描述: 哈夫曼树,第一行输入一个数n,表示叶结点的个数. 需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出哈夫曼树的带权路径长度(WPL). 输入格式 ...

  5. 【数据结构-N】哈夫曼树带权路径计算

    那个闪闪发光的人 会在某一天的雨后,不经意地出现在你的迷茫路口. 目录: 哈夫曼树的构建 带权路径长度计算 >>构建 哈夫曼树,又称最优二叉树,是一类带权路径长度最短的树. 构建哈夫曼树的 ...

  6. 给定结点权值,求哈夫曼树的带权路径长度和

    1.哈夫曼树概念 一棵树中,从任意一个结点到达另一个结点的通路叫做路径,该路径包含的边的个数称为路径长度,每个结点带有的表示某种意义的值成为权值.从根结点到叶子结点的路径长度乘以叶子节点权值,得到的值 ...

  7. 创建哈夫曼树并求带权路径长度

    创建哈夫曼树并求带权路径长度 [问题描述]根据给定的权重,构造哈夫曼树,输出其带权路径长度. [输入形式]输入权重,空格作为分隔,回车结束,权重个数小于10. [输出形式]哈夫曼树的带权路径长度. [ ...

  8. 构建哈夫曼树及求它的带权路径长度

    给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree).要构成哈夫曼树,值比较大的叶子节点高度越低越好. ( ...

  9. 每天一道数据结构练习题(给定权值求出哈夫曼树的带权路径长度)

    名词解释: 带权路径长度也就是树的带权路径长度,树的路径长度是从树根到树中每一结点的路径长度之和.在结点数目相同的二叉树中,完全二叉树的路径长度最短. 结点的权:在一些应用中,赋予树中结点的一个有某种 ...

最新文章

  1. python中get和set使用_Python对象属性的set和get方法
  2. 【无标题】ubuntu20.04 开机引导后黑屏 光标闪现 无法进入图形桌面的解决方案_Denis.Zzzzzzzz?的博客-CSDN博客_ubuntu20黑屏光标闪烁
  3. 沈向洋出任董事长李笛任CEO,「微软」小冰变身「中国」小冰
  4. sql 判断记录是否存在_判断数据库是否存在该条记录,count(0) or limit
  5. 数据结构Java06【赫夫曼树、概述、原理分析、代码实现(数据压缩、创建编码表、解码、压缩文件、解压文件)】
  6. es算法matlab编程,matlab练习程序(演化策略ES)
  7. 从真实项目中抠出来的设计模式——第二篇:过滤器模式
  8. GAN 优化 Yelp 形象图片广告
  9. 迭代器,生成器,三元表达式,列表解析式
  10. 如何减小Exe, DLL 的大小
  11. Win10系统升级,1804->21H2
  12. 国内那些靠谱些的招聘网站
  13. 凌晨3点--- 给我一支烟
  14. Spring AOP编程官方文档解读之操作Advised对象
  15. python 数据库框架peewee_python peewee模块使用
  16. 乐山计算机学校有几个,乐山计算机学校全国排名是多少,好不好?
  17. java开发报错怎么处理_Java开发中常见报错及解决办法
  18. ECIF OCRM ACRM关系
  19. Docker镜像压缩与优化
  20. Android手机QQ的UI自动化实践,死磕原理

热门文章

  1. 专场论坛 + MogDB 获奖丨云和恩墨亮相鲲鹏开发者峰会2022,共论数字化转型和数据库替代升级...
  2. oracle listagg支持,PostgreSQL行列转换(兼容oracle listagg)
  3. web测试基础知识(一)web基础
  4. #ifdef与#endif的作用及用法
  5. clientHeight和offsetHeight
  6. G. Count the Trains(思维set + 二分)
  7. 夜神模拟器(安卓9版本)中脱壳
  8. Django实现迷你淘宝(四) --- 基于Bootstrap的商品页面设计与美化
  9. 环境变量Path和classpath的作用是什么?
  10. PowerMILL Robot 2019机器人模块软件