template<class T>
void huffman(MinHeap<TreeNode<T>*> heap, int n)
{
for(int i=0;i<n-1;i++)
{
TreeNode<T> *first = heap.pop();
TreeNode<T> *second = heap.pop();
TreeNode<T> *bt = new BinaryTreeNode<T>(first, second, first.data, second.data);
heap.push(bt);
}
}
在我的 C++ 数据结构基础 教科书中,它给出了霍夫曼编码的 2 页定义,以及上面的代码。对我来说,这本书不够详细,所以我做了谷歌搜索,了解了霍夫曼编码的过程。教科书声称在上面的代码末尾,生成了一个霍夫曼树。但对我来说这似乎是错误的,因为霍夫曼树不一定是完整的树,但上面的代码似乎总是给出完整的树,因为heap.push()
. 那么有人可以向我解释这段代码如何没有错吗?