我需要在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);
}
}
我很感激如何解决这个问题。
感谢。
答案 0 :(得分:2)
将RBNode作为嵌套类没有意义。 使RBNode成为一个单独的类,并在RBTree中存储对RBNode的引用。它应该可以解决你的问题。
如果您想创建一个嵌套类,请将其设置为静态类,这样您就不必实例化父类来实例化RBNode。
new RBTree.RBNode();
如果将RBNode的类声明更改为,则应该有效
static class RBNode{}
答案 1 :(得分:0)
您只需要使用RBNode,而不是RBTree.RBNode。此外,你真的需要父母吗? RBNode可以是私有静态。