2012-12-08 149 views
1

我需要在java中實現一個紅黑色的搜索樹。我想過創建兩個類:RBTree和RBNode,其中RBNode嵌套在RBTree中(這是練習的要求)。Java嵌套類

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

將RBNode作爲嵌套類沒有意義。 使RBNode成爲一個獨立的類並在RBTree中存儲對RBNode的引用。它應該解決你的問題。

在情況下,你想一個嵌套類,使其靜態類,這樣你沒有實例化父類實例化RBNode。如果RBNode的變化類聲明

new RBTree.RBNode(); 

應努力

static class RBNode{} 
0

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