本文实例讲述了C++数据结构与算法之哈夫曼树的实现方法。分享给大家供大家参考,具体如下:
哈夫曼树又称最优二叉树,是一类带权路径长度最短的树。
对于最优二叉树,权值越大的结点越接近树的根结点,权值越小的结点越远离树的根结点。
前面一篇图文详解JAVA实现哈夫曼树对哈夫曼树的原理与java实现方法做了较为详尽的描述,这里再来看看C++实现方法。
具体代码如下:
#includeusing namespace std; #if !defined(_HUFFMANTREE_H_) #define _HUFFMANTREE_H_ /* * 哈夫曼树结构 */ class HuffmanTree { public: unsigned int Weight; unsigned int Parent; unsigned int lChild; unsigned int rChild; }; typedef char **HuffmanCode; /* * 从结点集合中选出权值最小的两个结点 * 将值分别赋给s1和s2 */ void Select(HuffmanTree* HT,int Count,int *s1,int *s2) { unsigned int temp1=0; unsigned int temp2=0; unsigned int temp3; for(int i=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++程序设计有所帮助。