2017-09-04 7 views
0

特定のオブジェクトが見つかった場合、同じオブジェクトと壊れたリストを持つオブジェクトを再帰的に検索できますか。オブジェクトの一覧を含むオブジェクトの一覧でDFSを実行する方法

例は、これが私の物であり、各オブジェクトは、私は基本的に私のリスト上でDFSをしたい独自の

MyObject: 

List<MyObject> 
    MyObject <- 2) Tag this and move onto next object 
     List<MyObject> 
      MyObject 
       List<MyObject> 
      MyObject <- 1) BOOM found what I want 
       List<MyObject> 
    MyObject 
    MyObject 
    MyObject 
    MyObject 
    MyObject 
    MyObject 
    MyObject 
    MyObject 

のリストをより深く行くことができます。私は再帰的にしようとしましたが、正しく終了することはできません。あなたの問題のために

enter image description here

+0

DFSは、グラフアルゴリズムであるあなたを助けるかもしれない、上記で説明。データに適用するには、グラフとして表示する方法を考えなければなりません。それはあなたの能力の中にあると確信しています。 –

+0

DFS用のコードを追加すると、より良い応答が得られます。 – SomeDude

答えて

1

このソリューションはABVEコードの

private static boolean search(Object object, Object searchingObject) { 
    List<?> al = (ArrayList) object; 
    for (int index = 0; index < al.size(); index++) { 
     if (al.get(index) instanceof List) { 
      if(search(al.get(index), searchingObject)) { 
       return true; 
      } 
     } else { 
      Iterator<Object> itr = (Iterator<Object>) al.iterator(); 
      Object o; 
      while (itr.hasNext()) { 
       o = itr.next(); 
       if (o.equals(searchingObject)) { 
        return true; 
       } 
      } 
     } 
    } 
    return false; 
}  

mainメソッド

public static void main(String[] args) { 
    ArrayList<ArrayList> o = new ArrayList<>(); 
    ArrayList<Integer> al = new ArrayList<>(); 
    ArrayList<ArrayList<Integer>> o1 = new ArrayList<>(); 
    al.add(2); 
    al.add(3); 
    al.add(4); 
    o1.add(al); 
    o.add(o1); 
    Integer i = 4;//Object which has to be searched 
    System.out.println(search(o,i));//returning true 
} 
関連する問題