Próbuję zrozumieć, co zrobić z moim problemem z pracy domowej. Próbuję utworzyć drzewo Huffman, które będzie kodować i dekodować wiadomości w Javie. Dostaję struny i częstotliwość.Drzewo Huffmana z podaną częstotliwością Zdezorientować jak zacząć? Java
[a=10, b=15, c=12, e=3, nl=4, sp=13, t=1].
wiem, że z Huffmana Drzewo wziąć dwóch najniższych częstotliwościach i uczynić je w drzewie z sumy ich częstotliwość jako rodzica. Rozumiem, że za pomocą kolejki priorytetowej mogę wstawić do niej całą częstotliwość i użyć metody remove()
, aby usunąć 2 najniższe częstotliwości. Następnie dodaj je razem, aby uzyskać ich wagę, a następnie włóż ten ciężar z powrotem do kolejki i powtórz.
Ostateczna Drzewo powinien posiadać ciężar
[58=root, root.left = 33, root.right = 25]
[33.left = 18, 18.left = 8, 8.left = 4]
nie jestem pewien dokładnie, jak nawet zacząć realizować kodu Huffmana drzewo, które będzie w stanie stworzyć drzewo z częstotliwością i wyświetlanie drzewa. Przyjrzałem się innym kodom i wygląda na to, że wszyscy tworzą z kodu wejściowego przesyłania strumieniowego.
Każda pomoc byłaby wspaniała w doprowadzeniu mnie do pracy. Z góry dziękuję!
jestem przypuszczać, aby wydrukować w formacie takich jak: (pre-order traversal)
58
- 33
- - 18
- - - 8
- - - - 4
- - - - - 1:t
- - - - - 3:e
- - - - 4:nl
- - - 10:a
- - 15:b
- 25
- - 12:c
- - 13:sp
Dziękuję. Jednym błędem jest to, że wydrukuje jeden z liści, który jeszcze nie powinien. To 10: drukowany, który powinien zostać wydrukowany po 4: nl. – JavaStudent