2009-11-21 82 views
0

我必須創建一個方法查找,將使用本地集合來收集對象和根。然後,我會壓縮對象e(在參數中)並將雄鳥作爲其父項。然後,我會將引用返回給根。我可以使用Graph,Map和Set類,因爲它已被導入。但是,我怎樣才能調用根的父親?我會把 mapParent.get(e)Java路徑壓縮

編輯 該方法的功能是讓節點指向根,我想用一個Set來將參數和對象的根之間的所有對象放在一起。然後,我會使用路徑壓縮。然後,我必須返回對象的引用。所以,我想知道如何調用父對象以某種方式引用父對象。所以這裏是我得到的:

public T find (T obj){ 
    //Set<E> s = new HashSet<E>(sizeOfRoot.size()); // i don't know how I would use the set yet 
     T p = null; 
     if (map.get(obj).equals(obj)) // I was trying to get the parent of e 
      return obj; 
     else{ 
      p = find(map.get(obj)); // recursively call the method to path compress 
     } 

    return p; // return the reference to the node 
    } 

你能幫我引導正確的方向嗎?

+2

對不起,但這是不可理解的。你能更清楚地描述你想要達到的目標以及你面臨的具體問題嗎?也許提供一個例子? – ChssPly76 2009-11-21 06:29:59

+2

這聽起來像是給其他人的家庭作業嗎? – 2009-11-21 06:43:45

+0

您是否試圖在標準Java集合中表示目錄結構? – Fortyrunner 2009-11-21 07:09:23

回答

1

正確的方法是將父節點與每個節點一起存儲。如果因爲任何原因你不能這樣做,那麼你應該使用Map而不是Set。

某處在你的代碼,你將填補這個地圖,通過調用

mapParents.put(obj, parent) 

後來的後來,你可以通過調用

parent=mapParents.get(obj) 

這一切,假設我正確理解你的要求檢索父。