0001 HuffTree huffTree(HuffForest& F) { //由Huffman森林,构造出Huffman编码树 0002 while (1 < F.size()) { //每迭代一步,森林中都会减少一棵树 0003 HuffTree T1 = F.remove(F.getMax()), 0004 T2 = F.remove(F.getMax()); //取出权重最小的两棵树 0005 HuffTree S; //将其合并成一棵新树 0006 S.insert(HuffChar(T1.root()->data.weight + T2.root()->data.weight)); 0007 S.attach(T2, S.root()); S.attach(S.root(), T1); //右大左小 0008 F.insert(S); //再插回至森林 0009 } //森林中最终唯一所剩的那棵树,即Huffman编码树 0010 return F.first()->data; //且层次序列必然单调非增 0011 } //huffTree