package com.xiejianjun.day09;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @author bilibilidick
* @version 2022 04
* @date 2022/4/24 17:05
*/
public class HuffmanTree {
public static void main(String[] args) {
int arr[] = {13, 7, 8, 3, 29, 6, 1};
List<BinaryNode> list = new ArrayList<>();
for (int i : arr) {
list.add(new BinaryNode(i));
}
while (list.size() >= 2) {
Collections.sort(list);
BinaryNode node1 = list.get(0);
BinaryNode node2 = list.get(1);
BinaryNode parent = new BinaryNode(node1.value + node2.value);
parent.left = node1;
parent.right = node2;
list.add(parent);
list.remove(parent.left);
list.remove(parent.right);
}
list.get(0).preOrder();
}
static class BinaryNode implements Comparable<BinaryNode>{
int value;
BinaryNode left;
BinaryNode right;
public BinaryNode(int value) {
this.value = value;
}
public void preOrder() {
System.out.println(this.value);
if (this.left != null) this.left.preOrder();
if (this.right != null) this.right.preOrder();
}
@Override
public int compareTo(BinaryNode o) {
return this.value - o.value;
}
@Override
public String toString() {
return "BinaryNode{" +
"value=" + value +
'}';
}
}
}
08-10
231
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
10-21
388
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)