// 构建赫夫曼树
public static void huffmantrees(ArrayList<Node> list) {
while (list.size() > 1) {
// 对节点进行排序
Collections.sort(list);
// 集合第一个是左子树
Node leftNode = list.get(0);
// 右子树
Node rightNode = list.get(1);
// 将两个子树的权值相加作为父节点的权值
Node parent = new Node(leftNode.getValue() + rightNode.getValue());
parent.setLeft(leftNode);
parent.setRight(rightNode);
// 在集合中删除左右子树的值
list.remove(leftNode);
list.remove(rightNode);
// 将生成的父节点放入集合中重新排序
list.add(parent);
}
}
}