从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径,路径上的分支数目称作路径长度。树的路径长度是从树根到每个结点的路径长度之和。结点的带权路径长度为结点到树根之间的路径长度与结点上权的乘机,树的带权路径长度为树中所有叶子节点的带权路径长度之和。

头文件:

/***************************************************************************************************** 
 *Copyright: Yue Workstation 
 * 
 *FileName: HuffmanTree.h 
 * 
 *Function: Huffman树的数据结构定义 
 * 
 *Author: Abel Lee 
 * 
 *CreateOn: 2012-2-19 
 * 
 *Log: 2012-2-19 由Abel Lee创建 
 *****************************************************************************************************/ 

#ifndef HUFFMAN_TREE_H 
#define HUFFMAN_TREE_H 

#include "global.h" 

#define NUMBER 4 

typedef struct 
{ 
          int weight; 
          int parent, lchild, rchild; 
}HTNode, *HuffmanTree; 

void PrintHuffmanTree(HuffmanTree ht, int n); 

#endif

源文件:

/***************************************************************************************************** 
 *Copyright:Yue Workstation 
 * 
 *FileName: HuffmanTree.c 
 * 
 *Function: Huffman树的操作 
 * 
 *Author:Abel Lee 
 * 
 *CreateOn:2012-2-19 
 * 
 *Log:2011-5-3 由Abel Lee创建 
 *****************************************************************************************************/ 

#include "../inc/HuffmanTree.h" 

//最小数 
static int _min(HuffmanTree ht, int i) 
{ 
          int j=0; 
          int temp=0; 

          for(j = 0; jweight = *w; 
        p->parent = 0; 
        p->lchild = 0; 
        p->rchild = 0; 
 } 
 for(; iweight = 0; 
        p->parent = 0; 
        p->lchild = 0; 
        p->rchild = 0; 
 } 

 for(i = n; i