我需要在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/