Java嵌套类

时间:2012-12-08 08:55:23

标签: java class

我需要在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);
    }


}

我很感激如何解决这个问题。

感谢。

2 个答案:

答案 0 :(得分:2)

将RBNode作为嵌套类没有意义。 使RBNode成为一个单独的类,并在RBTree中存储对RBNode的引用。它应该可以解决你的问题。

如果您想创建一个嵌套类,请将其设置为静态类,这样您就不必实例化父类来实例化RBNode。

new RBTree.RBNode();
如果将RBNode的类声明更改为

,则

应该有效

static class RBNode{}

答案 1 :(得分:0)

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