ハフマンツリーの確立
ハフマンツリー:すべてのノードの加重パス長の合計が最小のツリー
重みノード(左右からnull)をヒープのポインター配列に入力し、それを最小のヒープに配置し、一度に2つ取り出し、新しいノードtを作成し、2つの最小ノードをtに掛けます。 put t最小のヒープを挿入し、各ノードを1回マージし、合計h-> size回
typedef struct treenode {
int weight;
huffmantree left;
huffmantree right;
}*huffmantree;
typedef struct hfnode {
huffmantree *data;
int size;
int maxsize;
}*hfheap;
hfheap buildminheap(hfheap h);
huffmantree huffman(hfheap h) {
int i;
buildminheap(h);
for (i = 0; i < h->size; i++) {
huffmantree t =(huffmantree) malloc(sizeof(struct treenode));
t->left = deletemin(h);
t->right = deletemin(h);
t->weight = t->left->weight + t->right->weight;
insert(h, t);
}
t = deletemin(h);
return t;
}