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

📄 bordertree.java

📁 利用JAVA 实现的 霍夫曼编码压缩解压缩算法
💻 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 + -