当前位置:首页 > 数据结构Java8二叉树与树
//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 课后记:
共分享92篇相关文档