我在这里尝试了很多不同的东西,但似乎无法让它发挥作用。输入是“abbcccddddeeeee”,它给出了一个频率分别为 1、2、3、4、5 的链表 a、b、c、d、e。
但是,出于某种原因,它似乎根据我运行的许多不同的测试给了我以下树:
f15
/ \
f6 f9
/ \
d4 e5
/ \
f3 c3
/ \
a1 b2
public static HTree createHuffmanTree(HLinkedList list)
{
while (list.size() != 1)
{
list = getSortedLinkedList(list);
HTreeNode p = list.head;
HTreeNode q = p.next;
HTreeNode r = new HTreeNode('f');
r.left = p;
r.right = q;
r.frequency = (p.frequency + q.frequency);
list.insertIntoPosition(r, 2);
list.remove(0);
list.remove(0);
list = getSortedLinkedList(list);
}
return new HTree(list.head);
}
如果有人能帮助我,那真是太棒了,我非常非常沮丧。
谢谢!