ハフマンツリーの確立

ハフマンツリーの確立

ハフマンツリー:すべてのノードの加重パス長の合計が最小のツリー

ここに画像の説明を挿入
重みノード(左右から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;
}

おすすめ

転載: blog.csdn.net/qq_40602655/article/details/106605420