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


}


我将不胜感激如何解决此问题的任何想法。

谢谢。

最佳答案

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

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

new RBTree.RBNode();


如果将RBNode的类声明更改为

static class RBNode{}

关于java - Java嵌套类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13775971/

10-13 03:00