以下是利用堆构造huffman树的示例,最终构造结果如下图所示:
#include<iostream>
using namespace std;
//抽象数据类型
const int m=12; //外部结点的数目
typedef char datatype;
typedef struct node1
{
float key;//权值
datatype data;
struct node1 *lchild,*rchild;
}HTnode;//哈夫曼树结点
const int DefaultSize=20;
typedef struct
{
float key;//权值
datatype data;
HTnode *ptr;
}node;//堆结点
typedef struct
{
node *Heap;
int CurrentSize;
int MaxHeapSize;
}minHeap;
minHeap mh;
node W[m];
int i,j,start,EndOfHeap;
node temp,item,first,second;
HTnode *root,*p;
//筛选法
void FilterDown(minHeap &mh,int start,int EndOfHeap)
{
int i=start,j=2*i+1;
node temp=mh.Heap[i];
while(j<=EndOfHeap)
{