id Huffman
::destory(HuffmanNode
* pnode) { if( pnode!= NULL) { destory(pnode->lchild); destory(pnode->rchild); delete pnode; pnode = NULL; } }; template
void Huffman
::destory() { destory(root); };
哈夫曼树代码测试
int main()
{
Huffman
huff;
int a[] = {10,20,30,40};
huff.creat(a,4);
huff.print();
return 0;
}
输出结果:
当前结点:100.它的左孩子结点为:40.它的右孩子结点为:60.
当前结点:40.它没有左孩子.它没有右孩子.
当前结点:60.它的左孩子结点为:30.它的右孩子结点为:30.
当前结点:30.它没有左孩子.它没有右孩子.
当前结点:30.它的左孩子结点为:10.它的右孩子结点为:20.
当前结点:10.它没有左孩子.它没有右孩子.
当前结点:20.它没有左孩子.它没有右孩子.
昨天下午就开始写了,本来使用deque双向队列来存储森林中树的根节点,结果在排序找出权值最小的两棵树的时候遇到了麻烦,换了几种方式都是编译错误,折磨了几个小时。后来选择用数组来存储,今天下午试着写了一下,总算整出来了,还有待优化,分享一下吧,整个思路过程都有注释,下来在慢慢改。下面看哈夫曼编码。