1

Java で赤黒検索ツリーを実装する必要があります。RBTree と RBNode の 2 つのクラスを作成することを考えました。ここで、RBNode は RBTree 内にネストされます (これが演習の要求です)。

RBNode には次のフィールドが必要です。

キー、値、色 - 問題ありません。

parent、leftChild、rightChild - これも RBNode タイプです。RBNode のインスタンスを作成するには、RBTree のインスタンスが必要なので、これは実装できないようです。

これは私のコードです:

public class RBTree {


public RBNode createNode() {
    return this.new RBNode();
}



    class RBNode{

      private int key;
      private RBTree.RBNode rightChild = new RBTree.RBNode(); \//the problem is here

      public RBNode() {


        this.rightChild=null;
        this.key=-1;



      }  

}

    public static void main(String[] args) {

        RBTree t = new RBTree();
        RBNode rb = t.createNode();
        System.out.println(rb.key);
        System.out.println(rb.rightChild.key);
    }


}

これを解決する方法についてのアイデアをいただければ幸いです。

ありがとう。

4

2 に答える 2

2

入れ子になったクラスとして RBNode を作成しても意味がありません。RBNode を別のクラスにして、RBNode への参照を RBTree に格納します。それはあなたの問題を解決するはずです。

ネストされたクラスを作成する場合は、RBNode をインスタンス化するために親クラスをインスタンス化する必要がないように静的クラスにします。

new RBTree.RBNode();

RBNode のクラス宣言を

static class RBNode{}
于 2012-12-08T08:59:42.967 に答える
0

RBTree.RBNode ではなく、RBNode のみを使用する必要があります。さらに、あなたは本当に親が必要ですか?RBNode はプライベート スタティックにすることができます。

于 2012-12-08T08:59:36.363 に答える