1

我需要在java中实现一个红黑搜索树。我想过创建两个类:RBTree 和 RBNode,其中 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

您只需要使用 RBNode,而不是 RBTree.RBNode。此外,你真的需要父母吗?RBNode 可以是私有静态的。

于 2012-12-08T08:59:36.363 回答