我需要在樹中循環以獲取所有可能的路徑,在我的代碼中,我只獲得第一個路徑的問題!在樹狀結構中獲取所有可能的路徑
在該圖中,有2條路徑噸處理:1-2-3-4-5-6和1-2-3-7-8,但我無法得到兩個,我剛剛檢索1-2-3-4-5-6!
我的代碼:
在主:
for (String key : synset.keySet()) { // looping in a hash of Concept and it's ID
System.out.println("\nConcept: " + key + " " + synset.get(key));
List<Concept> ancts = myOntology.getConceptAncestors(myOntology.getConceptFromConceptID(synset.get(key))); // this function retreives the root of any node.
for (int i = 0; i < ancts.size(); i++) {
System.out.print(ancts.get(i).getConceptId() + " # ");
System.out.print(getChilds(ancts.get(i).getConceptId()) + " -> "); // here, the recursive function is needed to navigate into childs..
}
System.out.println("");
}
建議。功能:
public static String getChilds(String conId)
{
List<Concept> childs = myOntology.getDirectChildren(myOntology.getConceptFromConceptID(conId)); // get all childs of a node
if(childs.size() > 0)
{
for (int i = 0; i < childs.size(); i++) {
System.out.print(childs.size() + " ~ " + childs.get(i).getConceptId() + " -> ");
return getChilds(childs.get(i).getConceptId());
}
}
else
return "NULL";
return "final";
}
問題在於,您只提供我們需要幫助您的部分信息。如果不瞭解您的樹是如何構建的(內部表示),我們不能說您的算法爲什麼不正確。所以請回過頭來,轉到幫助中心,並閱讀http://stackoverflow.com/help/mcve,除此之外......你知道有很多方法可以遍歷樹嗎? https://en.wikipedia.org/wiki/Tree_traversal – GhostCat
我已經說明了需求清楚.. –
因爲'getChilds'方法返回'String'。當一個節點有兩個以上的孩子時的問題 – Jerry06