2016-11-13 167 views
0

我有一個linkdelist鏈表的數據結構。鏈表列表與遞歸

例如:

[ [A,B,C] [D,E,F] [A,B] [E,F] ] 

我的目標是要找到那些從來不包含在整個結構中的那些linkedlists。因爲它們分別包含[A,B]和[E,F],所以[A,B,C]和[D,E,F]不會被別人包含。 我需要使用遞歸,因爲我正在處理一棵樹,所以當我找到一個具有這些特徵的鏈表時,我必須記得我的功能。

這是我的實現:

private void treeGen(Node<LinkedList<String>> parent, LinkedList<LinkedList<String>> partitions) { 

    for (int i=0; i<partitions.size();i++) { 
     for(int j=0; i<partitions.size();i++) 
     { 
      //the condition discussed so far 
      if(!partitions.get(i).containsAll(partitions.get(j)) && parent.getData().containsAll(partitions.get(j))) 
      { 
       //create node 
       Node<LinkedList<String>> child = new Node<LinkedList<String>>(); 
       //set value 
       child.setData(partitions.get(i)); 
       //child of parent node 
       parent.addChild(child); 
       //new parent node, recursion 
       treeGen(child, partitions); 
      } 
      else 
      { 
       //do nothing 
      } 
     } 
    } 

儘管我比較所有可能的組合,我錯過了一些樹節點。 與鏈表有關的錯誤嗎?

+0

你在這裏用「包含」究竟是什麼意思? – kkaosninja

+0

歡迎來到Stack Overflow!它看起來像你需要學習使用調試器。請幫助一些[互補調試技術](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。如果您之後仍然有問題,請隨時返回更多詳情。 –

回答

1

嗯,我猜嵌套是爲了增加j而不是我。我建議你避免像這樣命名索引,它可能導致一個非常混亂的代碼,並且有時會導致這種錯誤。