哈夫曼树的高度怎么求(采用哈夫曼算法构造哈夫曼树进行编码)

本文目录
采用哈夫曼算法构造哈夫曼树进行编码
刚编的一个,试试吧
#include 《iostream.h》
#include 《malloc.h》
#include 《string.h》
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define OVERFLOW -1
#define INFEASIABLE -2
typedef struct {
char data;
int weight;
int parent,lchild,rchild;
}HTNode,*HuffmanTree;
typedef char **HuffmanCode;
int Select(HuffmanTree HT,int i,int &s1,int &s2){
s1=1;
s2=1;
int j;
for(j=1;j《i;j++){
if (HT.parent==0) {
if(HT.weight)
s1=j;
}
}
for(j=1;j《i;j++){
if (HT.parent==0&&j!=s1) {
if(HT.weight)
s2=j;
}
}
return s1,s2;
}
void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC){
int i,n,m,start,c,f;
int s1,s2;
char *cd;
char ch1,ch3;
cout《《"请输入要编码的字符个数(值大于0):";
cin》》n;
if(n《=1)
return;
m=2*n-1;
HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));
for(i=1;i《=n;++i){
cout《《"请输入第"《《i《《"个字符及其权值:";
cin》》ch1》》ch3;
HT.data=ch1;
HT.weight=ch3;
HT.lchild=0;
HT.parent=0;
HT.rchild=0;
}
for (;i《=m;++i){
HT.data=NULL;
HT.weight=0;
HT.lchild=0;
HT.parent=0;
HT.rchild=0;
}
for(i=n+1;i《=m;++i){
s1=0;
s2=0;
Select(HT,i-1,s1,s2);
HT.parent=i;
HT.parent=i;
HT.lchild=s1;
HT.rchild=s2;
HT.weight;
}
HC=(HuffmanCode)malloc((n+1)*sizeof(char*));
cd=(char*)malloc(n*sizeof(char));
cd=’\0’;
for(i=1;i《=n;++i){
start=n-1;
for(c=i,f=HT.parent)
if(HT.lchild==c)
cd=’0’;
else
cd=’1’;
HC=(char*)malloc((n-start)*sizeof(char));
strcpy(HC);
}
for(int z=1;z《=n;++z){
cout《《"输出"《《HT.data《《"的编码:";
cout《《HC;
cout《《endl;
}
free(cd);
}//HuffmanCoding
void main()
{
HuffmanTree HT;
HuffmanCode HC;
HuffmanCoding(HT,HC);
}
具有10个叶结点的哈夫曼树最小高度
10.5。根据查询相关信息得知,有10个叶子节点的哈夫曼树的总结点数为19个。如B和C节点深度都为1,因为从根节点到到该节点的边数为1,B的高度为2,而C的高度为1,由此得知哈夫曼树最小高度是10.5。
要求根据给定的权值机和构造一个计算,哈弗曼树的高度和带权路径长度wpl
哈夫曼树如下:
106
/ \
63 43
/ \ / \
29 34 20 23
/ \ / \ / \ / \
14 15 16 18 10 10 11 12
/ \ / \
6 8 9 9
/ \
4 5
/ \
2 3
WPL=361
n个叶子结点的哈夫曼树最小高度
树 - lagoon - lala的博客 - CSDN博客 - 含n个结点的4叉树的最小高度
2020年11月8日4.具有n个结点的m叉树的最小高度为logm( n(m-1) + 1 ) 向上取整。 每一层都满m,利用性...



CSDN编程社区

本文相关文章:
java编写网络代码(如何用70行Java代码实现深度神经网络算法)
2026年7月1日 19:15
algorithm英文翻译(求助翻译:“使用VC编程实现算法“用英语怎么说)
2026年5月18日 14:15
数据结构与算法c语言答案(关于数据结构算法,谁能帮我用C语言写下谢谢)
2026年1月16日 13:45
java冒泡排序经典(Java通过几种经典的算法来实现数组排序)
2025年12月30日 06:30
括号匹配栈c语言代码(设计算法,具体要求,用c语言,进栈,出栈,栈判空,数值转换,括号匹配,表达式求值,)
2025年11月22日 07:45
更多文章:
corrcoef函数(为什么matlab里corrcoef函数只能产生2×2的系数矩阵 求高手帮忙)
2026年1月20日 21:30
excel表格加减乘除函数公式(EXCEL中加法减法乘法除法怎么算啊!)
2025年11月13日 20:30
js字符串转date类型(js怎么把string转换成date)
2025年8月11日 06:00
onclick与click的区别(onclick和click的区别)
2025年5月31日 04:00
oracle触发器怎么设置(oracle apex 怎么设置触发器)
2025年8月13日 19:30
兼容织梦系统cms系统(什么是CMS系统目前流行的CMS系统主要有哪些各有哪些优缺点如何选择CMS系统拜托各位大神)
2025年10月5日 07:00
phpcmsv9最新利用工具(WampServer是一款WAMP软件包,该软件包由哪些软件整合而成)
2026年4月13日 18:15
写出在powerpoint中创建演示(阐述在PowerPoint中创建演示文稿的方法(至少三种))
2026年5月31日 02:30
word如何使用正则匹配(c#word查找用如何用正则表达式模糊匹配)
2025年6月14日 21:00
swift code 中国工商银行(中国工商银行的Swift code(银行国际代码)是什么)
2025年9月1日 20:45










