C++数据结构与算法之哈夫曼树的实现方法
本文实例讲述了C++数据结构与算法之哈夫曼树的实现方法。分享给大家供大家参考,具体如下:
哈夫曼树又称最优二叉树,是一类带权路径长度最短的树。
对于最优二叉树,权值越大的结点越接近树的根结点,权值越小的结点越远离树的根结点。
前面一篇图文详解JAVA实现哈夫曼树对哈夫曼树的原理与java实现方法做了较为详尽的描述,这里再来看看C++实现方法。
具体代码如下:
#includeusingnamespacestd; #if!defined(_HUFFMANTREE_H_) #define_HUFFMANTREE_H_ /* *哈夫曼树结构 */ classHuffmanTree { public: unsignedintWeight; unsignedintParent; unsignedintlChild; unsignedintrChild; }; typedefchar**HuffmanCode; /* *从结点集合中选出权值最小的两个结点 *将值分别赋给s1和s2 */ voidSelect(HuffmanTree*HT,intCount,int*s1,int*s2) { unsignedinttemp1=0; unsignedinttemp2=0; unsignedinttemp3; for(inti=1;i<=Count;i++) { if(HT[i].Parent==0) { if(temp1==0) { temp1=HT[i].Weight; (*s1)=i; } else { if(temp2==0) { temp2=HT[i].Weight; (*s2)=i; if(temp2 temp1&&HT[i].Weight >Data; cout< 希望本文所述对大家C++程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。