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

java.lang.Object
  |
  +--jp.ne.ytp.util.tree.TreeNode
        |
        +--jp.ne.ytp.util.tree.MultiTreeNode

class MultiTreeNode
extends TreeNode

多階層型二分探索木のノードです。 各ノードインスタンスは次の情報を持ちます。

  1. 左右ノードへの枝
  2. 下階層への枝
  3. 階層番号を表す1オリジンの整数
  4. ノードのキーを表現する文字列
  5. ノードのデータを表現するオブジェクト
  6. ノードキーの大小比較をするためのコンパレータ

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

フィールドの概要
(パッケージプライベート) static int BIGGER
          このノードよりキーが大きい場合に返す値です。
(パッケージプライベート) static int BINGO
          このノードとキーが同じ場合に返す値です。
(パッケージプライベート)  TreeNode left_
          このインスタンスノードの左ノードです。
(パッケージプライベート)  MultiTreeNode lowerNode
          下階層のノードです。
(パッケージプライベート) static int NOTFOUND
          キーが見つからない場合に返す値です。
(パッケージプライベート)  TreeNode right_
          このインスタンスノードの右ノードです。
(パッケージプライベート) static int SMALLER
          このノードよりキーが小さい場合に返す値です。
 
コンストラクタの概要
(パッケージプライベート) MultiTreeNode(java.lang.Object key, int iLayer)
          ノードのキーとしてkeyを、階層としてiLayerを持つノードインスタンスを生成します。
(パッケージプライベート) MultiTreeNode(java.lang.Object key, int iLayer, java.util.Comparator comp)
          ノードのキーとしてkeyを、階層としてiLayerを、 コンパレータとしてcompを持つノードインスタンスを生成します。
 
メソッドの概要
(パッケージプライベート)  TreeNode append(TreeNode newNode)
          newNodeノードを追加します。
(パッケージプライベート)  int compare(TreeNode compNode)
          このインスタンスのキーとcompNodeのキーを比較した結果を返します。
(パッケージプライベート)  int find(java.util.List lstTarget)
          lstTargetの先頭要素のノードを検索します。
(パッケージプライベート)  TreeNode find(TreeNode targetNode)
          推奨されていません。  
(パッケージプライベート)  java.lang.Object getData()
          このノードインスタンスが管理するデータオブジェクトを返します。
(パッケージプライベート)  java.lang.Object getKey()
          このノードインスタンスのキーを返します。
(パッケージプライベート)  int getLayer()
          このノードインスタンスのキーの階層番号を1オリジンで返します。
(パッケージプライベート)  void setComparator(java.util.Comparator comp)
          ノードキー大小比較用のコンパレータを設定します。
(パッケージプライベート)  void setData(java.lang.Object value)
          このノードインスタンスが管理するデータオブジェクトを設定します。
 java.lang.String toString()
          このノードキーの文字列表現を返します。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

lowerNode

MultiTreeNode lowerNode
下階層のノードです。


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_
このインスタンスノードの右ノードです。

コンストラクタの詳細

MultiTreeNode

MultiTreeNode(java.lang.Object key,
              int iLayer)
ノードのキーとしてkeyを、階層としてiLayerを持つノードインスタンスを生成します。 コンパレータは標準コンパレータDefaultComparatorを使用します。

パラメータ:
key - キー
iLayer - 階層番号

MultiTreeNode

MultiTreeNode(java.lang.Object key,
              int iLayer,
              java.util.Comparator comp)
ノードのキーとしてkeyを、階層としてiLayerを、 コンパレータとしてcompを持つノードインスタンスを生成します。

パラメータ:
key - キー
iLayer - 階層番号
comp - コンパレータ
メソッドの詳細

setComparator

void setComparator(java.util.Comparator comp)
ノードキー大小比較用のコンパレータを設定します。

パラメータ:
comp - コンパレータ

compare

int compare(TreeNode compNode)
このインスタンスのキーとcompNodeのキーを比較した結果を返します。 比較には標準コンパレータ(DefaultComparator)あるいは、 コンストラクタMultiTreeNode(Object, int, Comparator)または setComparator(Comparator)で設定されたコンパレータを使用します。

定義:
クラス TreeNode 内の compare
パラメータ:
compNode - 比較対照のノード

setData

void setData(java.lang.Object value)
このノードインスタンスが管理するデータオブジェクトを設定します。

パラメータ:
value - データオブジェクト

getData

java.lang.Object getData()
このノードインスタンスが管理するデータオブジェクトを返します。


getKey

java.lang.Object getKey()
このノードインスタンスのキーを返します。


getLayer

int getLayer()
このノードインスタンスのキーの階層番号を1オリジンで返します。

戻り値:
このノードの階層番号

toString

public java.lang.String toString()
このノードキーの文字列表現を返します。

オーバーライド:
クラス java.lang.Object 内の toString
戻り値:
このノードキーの文字列表現

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の先頭要素としてこのインスタンスの左ノードを設定(上書き)し、 TreeNode.SMALLERを返します。
  2. このインスタンスより大きいキーの場合
    lstTargetの先頭要素としてこのインスタンスの右ノードを設定(上書き)し、 TreeNode.BIGGERを返します。
  3. このインスタンスと同じキーの場合
    lstTargetの先頭要素としてこのインスタンスを設定(上書き)し、 TreeNode.BINGOを返します。
  4. 見つからなかった場合
    TreeNode.NOTFOUNDを返します。
当メソッドは、内部で再帰を使用していません。 そのため、呼び出し側で結果を判定しながらループさせる必要があります。

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