您现在的位置是:首页 > 后台技术 > 数据结构与算法数据结构与算法

赫夫曼树(图文)

第十三双眼睛2023-10-20【数据结构与算法】人已围观

简介赫夫曼树

赫夫曼树
package com.xingchen.day011;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class HuffManTree {
    public static void main(String[] args) {
        int[] arr = {13,7,8,3,29,6,1};
        Node huffManTree = createHuffManTree(arr);
        huffManTree.preOrder();
    }
    public static Node createHuffManTree(int[] arr) {
        List<Node> list = new ArrayList<>();
        for (int i = 0; i< arr.length; i++) {
            list.add(new Node(arr[i]));
        }
        while (list.size() > 1) {
            //排序,从小到大
            Collections.sort(list);
            //取出权值最小的两颗二叉树
            Node left = list.get(0);
            Node right = list.get(1);
            //构建一个新的二叉树
            Node parent = new Node(left.value + right.value);
            parent.left = left;
            parent.right = right;
            //从list中删除过处理过的元素
            list.remove(left);
            list.remove(right);
            list.add(parent);
        }
        return list.get(0);
    }
}
class Node implements Comparable<Node>{
    public int value;//节点权值
    public Node left;//指向左节点
    public Node right;//指向右节点
    public Node(int value) {
        this.value = value;
    }
    public void preOrder() {
        System.out.println(this);
        if (this.left != null) {
            this.left.preOrder();
        }
        if (this.right != null) {
            this.right.preOrder();
        }
    }
    @Override
    public String toString() {
        return "Node{" +
                "value=" + value +
                '}';
    }
    @Override
    public int compareTo(Node o) {
        return this.value - o.value;
    }
}

Tags:

很赞哦! ()

文章评论

    共有条评论来说两句吧...

    用户名:

    验证码:

本站推荐

站点信息

  • 网站名称:JavaStudy
  • 建站时间:2019-1-14
  • 网站程序:帝国CMS7.5
  • 文章统计242篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信公众号:扫描二维码,关注我们