多语言展示
当前在线:1302今日阅读:57今日分享:41

C语言程序 二叉树 ---- 哈夫曼树的生成

给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。
方法/步骤
1

ubuntu 14.04 linux cgcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2

2

#include #include #define MAX_WEIGHT 100typedef struct ht_tree{    int weight;    int parent;    int lchild;    int rchild;}ht;void create_huffman_tree(ht data[],int size){    int lnode_index=0,rnode_index=0,weight=0;    int lvalue_min=0,rvalue_min=0;    int i = 0,j = 0;    for(i = size;i<2*size-1;i++)    {        lvalue_min = rvalue_min = MAX_WEIGHT*size*2;        lnode_index = rnode_index= -1;        for(j=0;j

3

root@linux:~/code# gcc -o huffman_tree huffman_tree.c root@linux:~/code# ./huffman_tree 4the original array is :83,86,77,15,0,0,0,the huffman tree is : 83,86,77,15,92,169,261,

推荐信息