Я пытаюсь понять, что делать с домашним заданием. Я пытаюсь создать дерево Хаффмана, которое будет кодировать и декодировать сообщения на Java. Мне даны строки и частота.
[a=10, b=15, c=12, e=3, nl=4, sp=13, t=1].
Я знаю, что с помощью дерева Хаффмана вы берете две самые низкие частоты и превращаете их в дерево с суммой их частот в качестве родителя. Я понимаю, что с помощью очереди приоритета я могу вставить в нее всю частоту и использовать метод remove()
, чтобы удалить 2 самые низкие частоты. Затем сложите их вместе, чтобы получить Вес обоих, затем вставьте этот Вес обратно в Очередь и повторите.
Последнее дерево должно выдерживать вес
[58=root, root.left = 33, root.right = 25]
[33.left = 18, 18.left = 8, 8.left = 4]
Я не совсем уверен, как даже начать реализовывать код дерева Хаффмана, который сможет создать дерево с частотой и отобразить дерево. Я смотрел другие коды, и мне кажется, что все они создаются из кода потокового ввода или около того.
Любая помощь была бы отличной для меня. Заранее спасибо!
Я предполагаю распечатать в таком формате: (предварительный заказ)
58
- 33
- - 18
- - - 8
- - - - 4
- - - - - 1:t
- - - - - 3:e
- - - - 4:nl
- - - 10:a
- - 15:b
- 25
- - 12:c
- - 13:sp