Tools.h++ 7.0 クラスライブラリ・リファレンスマニュアル: RWBinaryTree

バナーをクリックすれば目次に戻ります

Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.

## RWBinaryTree

RWBinaryTree RWCollection RWCollectable

### 形式

      typedef RWBinaryTree SortedCollection;   // Smalltalk typedef.
      #include <rw/bintree.h>
      RWBinaryTree bt;

### 説明

  クラス RWBinaryTree は、`compareTo()` 関数で内部的にソートされ、順序付けられた要素の集まりを表します。要素を重複させることもできます。このクラスで格納された オブジェクトは、抽象基底クラス RWCollectable を継承しなければなりません。

### 持続性

  多相

### 公開コンストラクタ

      RWBinaryTree();

    空のソート済みコレクションを作成します。

      RWBinaryTree(const RWBinaryTree& t);

    コピーコンストラクタ。`t` からシャローコピーを作成します。後述のメンバー関数 `balance()` を呼び出してから戻ります。

      virtual ~RWBinaryTree();

    クラス RWCollection から再定義した関数。`clear()` を呼び出します。

### 公開メンバー演算子

      void
      operator=(const RWBinaryTree& bt);

    自分自身に `bt` のシャローコピーを設定します。

      void
      operator+=(const RWCollection ct);

    自分自身に `ct` の各要素を挿入します。この演算子を使用してソート済みコレクションを挿入すると、かなりバランスのとれないツリーを作成し、スタックのオーバーフローを起こす可能性があります。

      RWBoolean
      operator<=(const RWBinaryTree& bt) const;

    自分自身がコレクション `bt` の部分集合である場合、すなわち自身内のすべての項目が `bt` 内の項目と等しい場合に `TRUE` を返します。

      RWBoolean
      operator==(const RWBinaryTree& bt) const;

    自分自身と `bt` が等しい場合、すなわち両方の項目数が同じで、かつ両方の項目が等しい場合に `TRUE` を返します。

### 公開メンバー関数

      virtual void
      apply(RWapplyCollectable ap, void*);

    クラス RWCollection から再定義した関数で、コレクションの各メンバーに対して最小メンバーから最大メンバーの順番に、ユーザー定義関数 `ap` を適用します。この関数では、項目に対してコレクションの順序を変えないでください。

      void
      balance();

    ツリーのバランスをとる特殊な関数。重複要素のない完全にバランスのとれた B ツリー では、木の根から任意の終端ノード (葉) までのノード数は各々 1 ノードほどしか違いません。このコレクションでは要素を重複させることができるので、常に完全にバランスのとれたツリーができるわけではありません。重複要素の順序を保持します。

      virtual RWspace
      binaryStoreSize() const;

    クラス RWCollection から継承した関数。

      virtual void
      clear();

    クラス RWCollection から再定義した関数。

      virtual void
      clearAndDestroy();

    クラス RWCollection から継承した関数。

      virtual int
      compareTo(const RWCollectable* a) const;

    クラス RWCollectable から継承した関数。

      virtual RWBoolean
      contains(const RWCollectable* target) const;

    クラス RWCollection から継承した関数。

      virtual size_t
      entries() const;

    クラス RWCollection から再定義した関数。

      virtual RWCollectable*
      find(const RWCollectable* target) const;

    クラス RWCollection から再定義した関数。項目 `target` と等しい最初の項目を返し、等しい項目がない場合は `NULL` を返します。

      virtual unsigned
      hash() const;

    クラス RWCollectable から継承した関数。

      unsigned
      height() const;

    木の根ノードともっとも遠い葉ノードとの間にあるノード数を返します。1 つの項目を持つ RWBinaryTree の高さは 1 です。この値を得るのにツリー全体が走査されることに注意してください。

      virtual RWCollectable*
      insert(RWCollectable* c);

    クラス RWCollection から再定義した関数。項目 `c` をコレクションに挿入してその項目を返します。挿入が失敗したときは `NULL` を返します。`compareTo()` が返す値に応じて、項目 `c` を挿入します。`insert()` は RWCollection のバランスを自動的にはとりません。バランスのとれない (したがって、効率も悪い) 結果が生じないように、`balance()` を呼び出さずにソート済み項目の長い列を `insert()` で挿入しないように注意してください。

      virtual RWClassID
      isA() const;

    クラス RWCollectable から再定義した関数で、`__RWBINARYTREE` を返します。

      virtual RWBoolean
      isEmpty() const;

    クラス RWCollection から再定義した関数。

      virtual RWBoolean
      isEqual(const RWCollectable* a) const;

    RWCollectable から継承した関数。

      virtual size_t
      occurrencesOf(const RWCollectable* target) const;

    クラス RWCollection から再定義した関数。項目 `target` と等しい項目の数を返します。

      virtual RWCollectable*
      remove(const RWCollectable* target);

    クラス RWCollection から再定義した関数。オブジェクト `target` と等しい最初の項目を取り除き、それを返します。等しい項目がない場合は `NULL` を返します。

      virtual void
      removeAndDestroy(const RWCollectable* target);

    クラス RWCollection から継承した関数。

      virtual void
      restoreGuts(RWvistream&);
      virtual void
      restoreGuts(RWFile&);

    クラス RWCollection から継承した関数。

      virtual void
      saveGuts(RWvostream&) const;
      virtual void
      saveGuts(RWFile&) const;

    クラス RWCollection から再定義した関数で、オブジェクトを順序ではなくそのレベルごとに格納します。この結果、ツリーの構造が保たれます。

      RWStringID
      stringID();

    (仮想関数として動作) クラス RWCollectable から継承した関数。