哈夫曼树
1. 什么是哈夫曼树
2. 创建哈夫曼树
2.1 创建树节点TreeNode
//树的节点
public class TreeNode {
/**
* 值
* 左右孩子
*/
private int value;
public TreeNode left;
public TreeNode right;
public TreeNode() {
}
public TreeNode(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
2.2 构建哈夫曼树
首先,需要一个list来储存所有要被创建的节点,这里我是用LinkedList来实现List接口。创建完毕,就要对这个list初始化。
构建步骤:
- 创建list,以及根节点root,对list进行初始化。
- 对list进行升序排序,目的是为了找出value最小的两个节点。(我这里为了方便,用的选择排序,可以试试手撕快排)
- 取出list最小的两个节点,然后创建父节点,再子父相连 。(一定要子父相连)
- 最后,初始化根节点。
- (后面中序遍历是为了测试建树是否正确)
//哈夫曼树
public class HfmTree {
public TreeNode root = new TreeNode();
public List<TreeNode> list