我正在使用Java的优先级队列,而我的HuffmanTree
类扩展了Java的BinaryTree
(我正在使用合并)。
FreqTracker
只是一个包含char
,int
和一些getter / setter的类。
我正在经历并合并优先级队列中的最小(最低频率)元素,然后将该新树的根节点添加到优先级队列。
这最终会给我优先级队列中的重复根节点。你能告诉我为什么吗?
我得到的错误信息是“leftTree==rightTree; merge aborted
”
HuffmanTree t1;
HuffmanTree t2;
for(int i = 1; i < pq.size(); i = 1)
{
t1 = pq.remove();
t2 = pq.remove();
FreqTracker t3 = new FreqTracker(0);
t3.setFreq(t1.getRoot().getElement().getFreq() + t2.getRoot().getElement().getFreq());
merge(t3, t1, t2);
pq.add(this);
}