用Java编写给定节点(2,3,4,5)的哈夫曼树
时间: 2023-04-05 20:03:33 浏览: 77
我可以回答这个问题。以下是用Java编写给定节点(2,3,4,5)的哈夫曼树的代码:
```
import java.util.PriorityQueue;
public class HuffmanTree {
public static void main(String[] args) {
int[] arr = {2, 3, 4, 5};
Node root = buildHuffmanTree(arr);
printHuffmanCode(root, "");
}
private static Node buildHuffmanTree(int[] arr) {
PriorityQueue<Node> pq = new PriorityQueue<>();
for (int i = 0; i < arr.length; i++) {
pq.offer(new Node(arr[i]));
}
while (pq.size() > 1) {
Node left = pq.poll();
Node right = pq.poll();
Node parent = new Node(left.freq + right.freq);
parent.left = left;
parent.right = right;
pq.offer(parent);
}
return pq.poll();
}
private static void printHuffmanCode(Node root, String code) {
if (root.left == null && root.right == null) {
System.out.println(root.freq + ": " + code);
return;
}
printHuffmanCode(root.left, code + "0");
printHuffmanCode(root.right, code + "1");
}
static class Node implements Comparable<Node> {
int freq;
Node left;
Node right;
public Node(int freq) {
this.freq = freq;
}
@Override
public int compareTo(Node o) {
return this.freq - o.freq;
}
}
}
```
这段代码会输出给定节点(2,3,4,5)的哈夫曼编码。