数据结构--赫夫曼树及其应用
讲解请参考 赫夫曼
------ 赫夫曼树和赫夫曼编码的存储表示------
HC = (HuffmanCode) malloc ( (n+1) * sizeof(char*)); int p = m, cdlen = 0;for ( int i=1; i<=m; ++i) HT[i].weight = 0;while(p) { if ( HT[p].weight == 0 ) { HT[p].weight = 1; if ( HT[p].lchild != 0) { p = HT[p].lchild; cd[cdlen++] = "0"; }else if ( HT[p].lchild == 0) { HC[p] = (char*) malloc ((cdlen+1) * sizeof(char)); cd[cdlen] = "\0"; strcpy(HC[p],cd); } }else if ( HP[p].weight == 1) { HT[p].weight = 2; if ( HT[p].rchild != 0) { p = HT[p].rchild; cd [cdlen++] = "1"; }else { HT[p].weight = 0; p = HT[p].parent; --cdlen; } } }