优先级队列操作导致重复元素

时间:2013-04-22 20:01:31

标签: java binary-search-tree priority-queue

我正在使用Java的优先级队列,而我的HuffmanTree类扩展了Java的BinaryTree(我正在使用合并)。

FreqTracker只是一个包含charint和一些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);
    }

0 个答案:

没有答案