Advertisement

数据结构研究对象:哈夫曼树与哈夫曼编码

阅读量:

定义

带权路径长度(WPL):若某二叉树包含n个叶子节点,且每个叶子节点对应一个权值w_k,从根节点至各叶子节点的路径长度为l_k,则该二叉树的带权路径长度可表示为所有叶子节点的带权路径长度之和,即:WPL=\sum_{k=1}^{n}

最优二叉树或哈夫曼树:指在所有可能的二叉树结构中,其带权路径长度达到最小值的特定二叉树形式。

哈夫曼树构建方法

在每次操作中,需将具有最小权值的两棵二叉树进行合并处理。那么,如何有效识别出这两个最小的元素呢?此时可借助堆结构来实现。

复制代码
    typedef struct TreeNode *HuffmanTree;
    struct TreeNode{
    	int Weight;
    	HuffmanTree Left, Right;
    }
    HuffmanTree Huffman( MinHeap H )
    { 
    	/* 假设H->Size个权值已经存在H->Elements[]->Weight里 */
    	int i; HuffmanTree T;
     	BuildMinHeap(H); /*将H->Elements[]按权值调整为最小堆*/
     	for (i = 1; i < H->Size; i++) { /*做H->S

全部评论 (0)

还没有任何评论哟~