我想知道如何处理我的作业问题.我正在尝试创建一个将用Java编码和解码消息的霍夫曼树.我有字符串和频率.
[a=10, b=15, c=12, e=3, nl=4, sp=13, t=1].
Run Code Online (Sandbox Code Playgroud)
我知道,对于霍夫曼树,你可以选择两个最低的频率,然后将它们变成一棵树,其频率为总和.我知道使用优先级队列我可以将所有频率插入其中并使用该remove()方法取出2个最低频率.然后将它们加在一起以获得它们的重量,然后将该重量插入队列并重复.
最终的树应该保持重量
[58=root, root.left = 33, root.right = 25]
[33.left = 18, 18.left = 8, 8.left = 4]
Run Code Online (Sandbox Code Playgroud)
我不确定如何开始实现一个能够用频率创建树并显示树的霍夫曼树代码.我看看其他代码,似乎他们都是从Streaming Input Code创建的.
让我走的任何帮助都会很棒.提前致谢!
我想用以下格式打印出来:(预订遍历)
58
- 33
- - 18
- - - 8
- - - - 4
- - - - - 1:t
- - - - - 3:e
- - - - 4:nl
- - - 10:a
- - 15:b
- 25
- - 12:c
- - 13:sp
Run Code Online (Sandbox Code Playgroud)