-1

次のように Dictionary インターフェースが与えられます。

public interface Dictionary<E extends Comparable<E>> extends Iterable<E> {

ここで、二分探索木を使用してこのインターフェイスを実装するように求められましたが、上記の Dictionary インターフェイスを実装するという理論的な概念とかなり混乱しているため、開始方法がわかりません。

これは私の実装クラスです:

// Red-black binary search tree
public class DictionaryImp implements Dictionary<DictionaryImp>, Comparable<DictionaryImp> {

では、これらの次のメソッドをどのように実装できますか? クラス DictionaryImp によって実行されるインスタンス変数は何ですか?

public boolean isEmpty();
public boolean contains(E item);
public boolean hasPredecessor(E item);
// etc.
4

2 に答える 2

0

あなたが持っているクラス宣言はあまり意味がありません。のタイプパラメータはDictionary、辞書の要素タイプ用のようです。それが彼らが要素を彼ら自身に匹敵することを要求した理由です。DictionaryImpあなたの宣言は、それが要素もある辞書であると言っているようですがDictionaryImp、それは意味がありません。おそらく必要なのは、DictionaryImp一般的なものであり、その要素タイプはそれ自体に匹敵し、次のように同じタイプパラメーターを使用して辞書を実装します。

public class DictionaryImp<E extends Comparable<E>> implements Dictionary<E>
于 2012-05-13T22:36:20.247 に答える
0

赤黒ツリーの実装はわかりませんが、基本的に、言及されたすべてのメソッドは、対応する赤黒ツリー メソッドを呼び出します。

isEmpty: ツリーが空かどうかを確認します

contains(E item): ツリーでバイナリ検索を実行して要素を見つけます。見つかった場合は true を返す

add(E item): if (!contains(item)) tree.add(item);

などなど

于 2012-05-13T08:25:13.227 に答える