js 实现哈夫曼树

复制代码
    ;(function(){
        var hash=function(arr){
            var me=this;
            me.arr=[];
            arr.forEach(i=>{
                me.arr.push({value:i});
            });
            me.createTree();
        };
        hash.prototype={
            constructor:hash,
            createTree:function(){
                var me=this;
                while(me.arr.length!==1){
                    var nodeA=me.findSmall(me.arr);
                    var nodeB=me.findSmall(me.arr);
                    var obj={};
                    obj.value=nodeA.value+nodeB.value;
                    obj.right=nodeB;
                    obj.left=nodeA;
                    me.arr.unshift(obj);
                }
            },
            findSmall:function(arr){
                var me=this;
                var tem=Infinity;
                var index=0;
                arr.forEach((i,ind)=>{
                    if(i.value<tem){
                        tem=i.value;
                        index=ind;
                    }
                });
                return  arr.splice(index,1)[0];
            }
        };
        new hash([9,12,6,3,5,15]);
    })();
复制代码

 

posted on   偏灬爱  阅读(436)  评论(0编辑  收藏  举报

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

导航

统计

点击右上角即可分享
微信分享提示