2009-11-21 85 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) 

这一切,假设我正确理解你的要求检索父。