jp.gr.java_conf.dangan.util.lha

Class DynamicHuffman

Implemented Interfaces:
Cloneable

public class DynamicHuffman
extends Object
implements Cloneable

動的ハフマンを扱うクラス。
 -- revision history --
 $Log: DynamicHuffman.java,v $
 Revision 1.0  2002/07/24 00:00:00  dangan
 add to version control
 [bug fix]
     addLeaf() で葉の数が 1 から 2へと増加するときに
     最初からあった葉の重さが 1 だと決め付けていた。
 [change]
     コンストラクタ DynamicHuffman( int, int ) で
     開始時のハフマン木のサイズでなく 開始時の葉の数を渡すように変更。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の変更

 
Version:
$Revision: 1.0 $
Author:
$Author: dangan $

Field Summary

static int
ROOT
ハフマン木のルートを示す。

Constructor Summary

DynamicHuffman(int count)
コンストラクタ
DynamicHuffman(int max, int first)
コンストラクタ

Method Summary

void
addLeaf(int code)
ハフマン木に code を示す葉を追加する。
int
childNode(int node)
ノードが葉でないノードなら子ノードのノード番号、 ノードが葉ならノードの持つデータを全ビット反転したものを得る。 子ノードのノード番号は兄弟特性と利用するため、
node の 0 の子ノードの場合 childNode( node )
node の 1 の子ノードの場合 childNode( node ) - 1
となる。
Object
clone()
このオブジェクトの現在の状態を持つコピーを作成して返す。
int
codeToNode(int code)
データからノード番号を得る。
int
parentNode(int node)
node の親ノードのノード番号を得る。
void
update(int code)
code の重みが増すようにハフマン木を更新する。

Field Details

ROOT

public static final int ROOT
ハフマン木のルートを示す。
Field Value:
0

Constructor Details

DynamicHuffman

public DynamicHuffman(int count)
コンストラクタ
Parameters:
count - 葉の数

DynamicHuffman

public DynamicHuffman(int max,
                      int first)
コンストラクタ
Parameters:
max - 葉の最大数

Method Details

addLeaf

public void addLeaf(int code)
ハフマン木に code を示す葉を追加する。
Parameters:
code - 葉の示す符号

childNode

public int childNode(int node)
ノードが葉でないノードなら子ノードのノード番号、 ノードが葉ならノードの持つデータを全ビット反転したものを得る。 子ノードのノード番号は兄弟特性と利用するため、
node の 0 の子ノードの場合 childNode( node )
node の 1 の子ノードの場合 childNode( node ) - 1
となる。
Parameters:
node - ノード
Returns:
node の子ノードのノード番号

clone

public Object clone()
このオブジェクトの現在の状態を持つコピーを作成して返す。
Returns:
このオブジェクトの現在の状態を持つコピー

codeToNode

public int codeToNode(int code)
データからノード番号を得る。
Parameters:
code - データ
Returns:
codeのノード番号

parentNode

public int parentNode(int node)
node の親ノードのノード番号を得る。
Parameters:
node - ノード
Returns:
node の親ノードのノード番号。

update

public void update(int code)
code の重みが増すようにハフマン木を更新する。
Parameters:
code - 重みを増やす葉

When you found typographical errors or omissions, Please mail to cqw10305@nifty.com
The company name and product name which are used in this document, it is the trademark or registered trademark of each company generally.
Copyright © 2001-2002 Michel Ishizuka. All Rights Reserved.