java语言构建哈夫曼树

哈夫曼树

给定 n 个权值,作为 n 个叶子结点,构造一个二叉树,如果该树的带权路径长度最小,就称该二叉树为最优二叉树,也称为哈夫曼树。

构建步骤
  1. 将权值序列从小到大排序,每个权值都看作是一个简单的二叉树。
  2. 取出根节点权值最小的两棵二叉树,组成一棵新的二叉树,新二叉树的根节点的值为它左右子节点的值之和。注意:对某个节点,构建过程中,使其右子节点权值不小于左子节点权值
  3. 以现有的二叉树的根节点的值,重新排序,重新执行步骤2。直到初始权值序列中每一个节点都加入到二叉树中,这样就构成一棵哈夫曼树。
代码如下
  1. 定义节点类
public class Node implements Comparable<Node> {
   
    private int value;
    private Node leftNode;
    private Node rightNode;

    public Node(int value) {
   
        this.value = value;
    }

	//getter   setter   toString

    //前序遍历
    public void preOrder(){
   
        System.out.println(this);
        if (this.getLeftNode() != null
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值