📄 bordertree.java
字号:
package compress;
public class BOrderTree
{
public int[] keyhuffman;
public Object keychar=null;
public BOrderTree()
{}
//建立2叉数据排序树
public void creatBCTree(MyBTree btree,MyBTree p,char[] charfinnal,int[][] HC,int i)
{
if (i < charfinnal.length)
{
if (charfinnal[i] > p.value && p.rchild != null)
{
creatBCTree(btree, p.rchild, charfinnal, HC, i);
} else if (charfinnal[i] < p.value
&& p.lchild != null)
{
creatBCTree(btree, p.lchild, charfinnal, HC, i);
} else if (charfinnal[i] > p.value
&& p.rchild == null)
{
p.rchild = new MyBTree(charfinnal[i], HC[i]);
i++;
creatBCTree(btree, btree, charfinnal, HC, i);
} else if (charfinnal[i] < p.value
&& p.lchild == null)
{
p.lchild = new MyBTree(charfinnal[i], HC[i]);
i++;
creatBCTree(btree, btree, charfinnal, HC, i);
}
}
}
// 建立2叉huffman排序树
public void creatBHTree(MyBTree p,char charfinnal,int[] HC,int j)
{
if (j<HC.length)
{
if (HC[j]==1 && p.rchild != null)
{
j++;
creatBHTree(p.rchild, charfinnal, HC, j);
} else if (HC[j]==0 && p.lchild != null)
{
j++;
creatBHTree(p.lchild, charfinnal, HC, j);
} else if (HC[j]==1 && p.rchild == null)
{
if(j==HC.length-1) p.rchild=new MyBTree(charfinnal);
else p.rchild = new MyBTree(null);
j++;
creatBHTree(p.rchild, charfinnal, HC, j);
} else if (HC[j]==0 && p.lchild == null)
{
if(j==HC.length-1) p.lchild=new MyBTree(charfinnal);
else p.lchild = new MyBTree(null);
j++;
creatBHTree(p.lchild, charfinnal, HC, j);
}
}
}
//搜索所读数据在2叉树中的位置,将搜到的数据的huffman值给keyhuffman
public void charfind(MyBTree btree,char charfind)
{
if(charfind==btree.value)
{
keyhuffman=new int[btree.huffman.length];
keyhuffman=btree.huffman;
return;
}
else if(charfind>btree.value)
{
charfind(btree.rchild,charfind);
}
else if(charfind<btree.value)
{
charfind(btree.lchild,charfind);
}
}
// 搜索所读huffman值在2叉树中的位置,将搜到的数据给keychar
public void huffmanfind(MyBTree btree,String huffman,int i)
{
if(btree.Char!=null)
{
keychar=btree.Char;
return;
}
if(i<huffman.length())
{
if(huffman.charAt(i)=='0')
{
i++;
huffmanfind(btree.lchild,huffman,i);
}
else if(huffman.charAt(i)=='1')
{
i++;
huffmanfind(btree.rchild,huffman,i);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -