Ich versuche zu verstehen, was ich mit meinem Hausaufgabenproblem tun soll. Ich versuche, einen Huffman-Baum zu erstellen, der Nachrichten in Java codiert und dekodiert. Ich habe Strings und Frequency.Huffman-Baum mit gegebener Häufigkeit Wie beginnen? Java
[a=10, b=15, c=12, e=3, nl=4, sp=13, t=1].
Ich weiß, dass mit Huffman-Baum Sie die beiden niedrigsten Frequenzen nehmen und sie in einen Baum mit der Summe ihrer Häufigkeit als Mutter zu machen. Ich verstehe, dass mit einer Prioritätswarteschlange kann ich die gesamte Frequenz einfügen und verwenden Sie die remove()
Methode, um die 2 niedrigsten Frequenz. Dann fügen Sie sie zusammen, um das Gewicht von ihnen beide zu erhalten, dann fügen Sie dieses Gewicht wieder in die Warteschlange ein und wiederholen es.
Der letzte Baum soll Gewicht von
[58=root, root.left = 33, root.right = 25]
[33.left = 18, 18.left = 8, 8.left = 4]
hält ich bin nicht sicher, wie man auch beginnen, einen Huffman-Baum-Code zu implementieren, die den Baum mit der Frequenz zu erzeugen in der Lage, und den Baum angezeigt werden soll. Ich habe mir andere Codes angeschaut und es sieht so aus, als würden sie allesamt aus Streaming Input Code erstellen.
Jede Hilfe wäre großartig, um mich in Gang zu bringen. Danke im Voraus!
Ich bin suppose mit einem Format auszudrucken, wie: (Pre-Order Traversal)
58
- 33
- - 18
- - - 8
- - - - 4
- - - - - 1:t
- - - - - 3:e
- - - - 4:nl
- - - 10:a
- - 15:b
- 25
- - 12:c
- - 13:sp
Danke. Ein Fehler, der es tut, ist, dass es eines der Blätter druckt, die es noch nicht haben sollte. Es ist die 10: a, die gedruckt wird, die nach dem 4: nl gedruckt werden soll. – JavaStudent