jp.ne.ytp.util.tree
クラス TreeNode

java.lang.Object
  |
  +--jp.ne.ytp.util.tree.TreeNode
直系の既知のサブクラス:
MultiTreeNode

abstract class TreeNode
extends java.lang.Object

二分探索木のノード用基底クラスです。 左右ノードの参照のみを持ちます。
[未解決]単純な二分探索木であるためソートされたデータが来ると、 深刻な性能問題が起きます。赤黒木などの平衡木に換装する必要があります。

バージョン:
$Id$
作成者:
YTP
関連項目:
MultiTreeNode

フィールドの概要
(パッケージプライベート) static int BIGGER
          このノードよりキーが大きい場合に返す値です。
(パッケージプライベート) static int BINGO
          このノードとキーが同じ場合に返す値です。
(パッケージプライベート)  TreeNode left_
          このインスタンスノードの左ノードです。
(パッケージプライベート) static int NOTFOUND
          キーが見つからない場合に返す値です。
(パッケージプライベート)  TreeNode right_
          このインスタンスノードの右ノードです。
(パッケージプライベート) static int SMALLER
          このノードよりキーが小さい場合に返す値です。
 
コンストラクタの概要
(パッケージプライベート) TreeNode()
           
 
メソッドの概要
(パッケージプライベート)  TreeNode append(TreeNode newNode)
          newNodeノードを追加します。
(パッケージプライベート) abstract  int compare(TreeNode trNode)
          ノード同士のキーを比較する際に使用する抽象化メソッドです。
(パッケージプライベート)  int find(java.util.List lstTarget)
          lstTargetの先頭要素のノードを検索します。
(パッケージプライベート)  TreeNode find(TreeNode targetNode)
          推奨されていません。  
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

SMALLER

static final int SMALLER
このノードよりキーが小さい場合に返す値です。

関連項目:
定数フィールド値

BIGGER

static final int BIGGER
このノードよりキーが大きい場合に返す値です。

関連項目:
定数フィールド値

BINGO

static final int BINGO
このノードとキーが同じ場合に返す値です。

関連項目:
定数フィールド値

NOTFOUND

static final int NOTFOUND
キーが見つからない場合に返す値です。

関連項目:
定数フィールド値

left_

TreeNode left_
このインスタンスノードの左ノードです。


right_

TreeNode right_
このインスタンスノードの右ノードです。

コンストラクタの詳細

TreeNode

TreeNode()
メソッドの詳細

compare

abstract int compare(TreeNode trNode)
ノード同士のキーを比較する際に使用する抽象化メソッドです。


append

TreeNode append(TreeNode newNode)
newNodeノードを追加します。
newNodeのキーとインスタンスのキーをコンパレータにより比較し、
  1. このインスタンスより小さいキーの場合
    • このインスタンスの左ノードが既にある場合はそのノード
    • このインスタンスの左ノードがまだ無い場合はnewNodeを左にぶら下げてnull
  2. このインスタンスより大きいキーの場合
    • このインスタンスの右ノードが既にある場合はそのノード
    • このインスタンスの右ノードがまだ無い場合はnewNodeを右にぶら下げてnull
  3. このインスタンスと同じキーの場合はnull
をそれぞれ返します。
当メソッドは、内部で再帰を使用していません。 そのため、呼び出し側で結果を判定しながらループさせる必要があります。

パラメータ:
newNode - 追加対象のノード
戻り値:
追加を完了した場合はnull、引き続き処理が必要な場合はそのノード

find

TreeNode find(TreeNode targetNode)
推奨されていません。  

targetNodeノードを検索します。 当メソッドは再帰を利用しているためStackOverFlowエラーが発生する危険があり、 使用しないで下さい。


find

int find(java.util.List lstTarget)
lstTargetの先頭要素のノードを検索します。
lstTargetの先頭要素のノードのキーとインスタンスのキーをコンパレータにより比較し、
  1. このインスタンスより小さいキーの場合
    lstTargetの先頭要素としてこのインスタンスの左ノードを設定(上書き)し、 SMALLERを返します。
  2. このインスタンスより大きいキーの場合
    lstTargetの先頭要素としてこのインスタンスの右ノードを設定(上書き)し、 BIGGERを返します。
  3. このインスタンスと同じキーの場合
    lstTargetの先頭要素としてこのインスタンスを設定(上書き)し、 BINGOを返します。
  4. 見つからなかった場合
    NOTFOUNDを返します。
当メソッドは、内部で再帰を使用していません。 そのため、呼び出し側で結果を判定しながらループさせる必要があります。

パラメータ:
lstTarget - 検索対象のノードを先頭要素として格納したリスト
戻り値:
SMALLER/BIGGER/BINGO/NOTFOUND のいずれか