哈夫曼编码(算法)

给个最简单的例子,若给定数组[1,2,3,4,5],如何获得哈夫曼树?

 

根据哈夫曼的编码方法(假设大家都会),可以得到哈夫曼树如上所示 

可以给出伪代码如下:

Change_Array_To_Huffman(A[n]) {
    BinaryTree *T[n];
    BinaryTree *B;

    for(i : from 1 to n) {
        T[i]->data = A[i];
        T[i]->left = Null;
        T[i]->right = Null;
    }
    
    for(i : from 1 to n) {
        select k1 & k2 as non-empty minimum-data index;
        B->data = T[k1]->data + T[k2]->data;
        B->left = T[k1];
        B->right = T[k2];
        T[k1] = B;
        T[k2] = Null;
    }
    
    return B;
}

伪代码可自行进行扩展,以上!

 

posted @ 2021-10-20 14:44  程序小喵  阅读(598)  评论(0编辑  收藏  举报