美文网首页JavaScript与数据结构
JavaScript数据结构12——构造一个赫夫曼树

JavaScript数据结构12——构造一个赫夫曼树

作者: RichardW | 来源:发表于2017-04-01 22:01 被阅读0次

不得不说,当不同数据访问的概率是有规律的时候,可以使用赫夫曼树来提高性能

//二叉树节点
function Node(data) {
  this.data = data;
}
 
Array.prototype.createHufuTree = function() {
  var nodes = [];
  /*初始化结点*/
  for (var i = 0; i < this.length; i++) {
    nodes.push(new Node(this[i]));
  }
  while (nodes.length > 1) {
    nodes.sort(function(a, b) {
      return a.data - b.data;
    });
    var one = nodes.shift();
    var two = nodes.shift();
    var sum = one.data + two.data;
    /*构造结点*/
    var root = new Node(sum);
    console.info('one:'+one.data);
    console.info('two:'+two.data);
    if(one.data<=two.data){
      root.left = one;
      root.right = two;
    }else{
      root.right = one;
      root.left = two;
    }
    nodes.unshift(root);
  }
  return nodes[0];
}
 
/*测试用例*/
var datasarray = [5,10,15,30,40];
var res = datasarray.createHufuTree();
console.info(JSON.stringify(res));

打印

one:5
two:10
one:15
two:15
one:30
two:30
one:40
two:60
{"data":100,"left":{"data":40},"right":{"data":60,"left":{"data":30,"left":{"data":15,"left":{"data":5},"right":{"data":10}},"right":{"data":15}},"right":{"data":30}}}
[Finished in 0.1s]

相关文章

  • Java_二叉树用途

    赫夫曼树 赫夫曼树的构造 赫夫曼树构造过程 查找二叉树

  • JavaScript数据结构12——构造一个赫夫曼树

    不得不说,当不同数据访问的概率是有规律的时候,可以使用赫夫曼树来提高性能 打印 one:5two:10one:15...

  • 2018-11-27

    今天看了哈夫曼构造过程,了解如何构造哈夫曼树。

  • 赫夫曼编码对文件进行压缩与解密

    理论 赫夫曼树 先有赫夫曼树,才有赫夫曼编码。所以,首先简单介绍一下什么是赫夫曼树。 假设一共五个叶子节点,分别是...

  • 数据结构06-哈夫曼树与哈夫曼编码

    数据结构06-哈夫曼树 一、哈夫曼树的基本概念 1.哈夫曼树 给定n个权值作为n个叶子节点,构造一棵二叉树,若带权...

  • 赫夫曼编码&解码

    之前说到了如何构建赫夫曼树,那么赫夫曼树有什么用呢?赫夫曼树经典的应用之一就是赫夫曼编码。 1. 赫夫曼编码是什么...

  • 数据结构

    哈夫曼树的构造

  • 哈夫曼树(赫夫曼树、最优树)及C语言实现

    from:http://data.biancheng.net/view/33.html 赫夫曼树,别名“哈夫曼树”...

  • 题型

    树 二叉树相关计算二叉树的三种遍历序列 前/后序+中序序列构造树 哈夫曼树 哈夫曼树的构造哈夫曼编码带权路径长度压...

  • 初识哈夫曼树

    何为哈夫曼树: 哈夫曼树是压缩算法中非常重要数据结构。百度百科解释:给定n个权值作为n个叶子节点,构造一棵二叉树,...

网友评论

    本文标题:JavaScript数据结构12——构造一个赫夫曼树

    本文链接:https://www.haomeiwen.com/subject/rkswottx.html