//x2记下次最小权值结点的下标 }
huftree[x1].parent = n+i; //将找出的两棵权值最小的子树合并为一棵子树 huftree[x2].parent = n+i; this.huftree[n+i] = new
TriElement(huftree[x1].data+huftree[x2].data, -1, x1, x2); } }
public String toString() {
        String str=\树的结点数组:\\n\;         for (int i=0; i   从叶结点开始向上搜索,是左孩子原串的左边加“0”,是右孩子原串的左边加“1”。思路与链表的搜索相同。       public String[] huffmanCodes()                         //返回当前Huffman树的Huffman编码     {          String[] hufcodes = new String[this.leafNum];         for(int i=0; i             hufcodes[i]=\;             int child = i;              int parent = huftree[child].parent;              while (parent!=-1)                             //由叶结点向上直到根结点循环             {                  if (huftree[parent].left==child)                      hufcodes[i]=\+hufcodes[i];            //左孩子结点编码为0                 else                      hufcodes[i]=\+hufcodes[i];           //右孩子结点编码为1                  child = parent;                  parent = huftree[child].parent;                     }         }          return hufcodes;     } }  (4) Huffman树上的搜索,求每个结点的路径长度  public int[] huffmanH()                         //返回当前Huffman树的Huffman编码     {          int[] hufcodes = new int[this.leafNum];          for(int i=0; i             hufcodes[i]=0;             int child = i;              int parent = huftree[child].parent;              while (parent!=-1)                             //由叶结点向上直到根结点循环             {               hufcodes[i]++;                            child = parent;                  parent = huftree[child].parent;                     }         }          return hufcodes; } //调用  int hh[]=ht.huffmanH();    System.out.println(ht.toString());//哈夫结点   for (int i=0; i 7.哈夫曼编码SMU1463、1287、1288 求最小费用Smp1053 三、树  课后任务:完成课堂上的例子,自觉在SMUOJ,POJ上做题.  SMU1259、1261、1262、1263、1265、1273、1286、1288、1465、1580、 : \+weight[i]+\ 1603、1607  POJ3437、2499、2255、1145、1095、2309、1577 课后记:  
相关推荐: