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()
。では、誰かがこのコードが間違っていないことを私に説明できますか?