⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 huffmantree.java

📁 用Java编写的编码算法
💻 JAVA
字号:
/*
 * HuffmanTree.java
 *
 * Created on 2008年11月14日, 上午12:21
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package coding;

/**
 *
 * @author new
 */
public class HuffmanTree {
    static final double MAXNUMBER=1000;
    /** Creates a new instance of HuffmanTree */
    public HuffmanTree() {
    }
   public void creatHuffmanTree(QHTNode ht[],int n){
    int i,j;
    int lchild,rchild;
    double minL,minR;
    for(i=0;i<2*n-1;i++){
        if(i>=n) ht[i]=new QHTNode();
        ht[i].parent = ht[i].lchild = ht[i].rchild = -1;
    }
    for(i=n;i<2*n-1;i++){
        minL = minR = MAXNUMBER;
        lchild = rchild = -1;
        for(j=0;j<i;j++){
            if(ht[j].parent == -1){
                if(ht[j].weight < minL){
                    minR = minL;
                    minL = ht[j].weight;
                    rchild = lchild;
                    lchild = j;
                }else if(ht[j].weight < minR){
                    minR = ht[j].weight;
                    rchild = j;
                }
            }
        }
        ht[lchild].parent = ht[rchild].parent = i;
        ht[i].weight = minL + minR;
        ht[i].lchild = lchild;
        ht[i].rchild = rchild;
    }    
}
    
    
 public void createHuffmanCode(QHTNode ht[],QHCode hc[],int n){
    int i,f,c;
    for(i=0;i<n;i++){
        hc[i]=new QHCode();
        hc[i].code="字符"+ht[i].c+"的哈弗曼编码为:";
        hc[i].start = n;
        c = i;
        int count=0;
         String[] sstr=new String[100];
        while((f=ht[c].parent) != -1){
            if(ht[f].lchild == c){
                sstr[count++]="0";
               // hc[i].code="0";
                hc[i].start--;
            }else{
                sstr[count++]="1";
               // hc[i].code="1";
                hc[i].start--;
            }
            c = f;
        }
        hc[i].start++;
        for(int j=count-1;j>=0;j--){
            hc[i].code+=sstr[j];
        }
        hc[i].code+="\n";
    }
}
 
 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -