2013-02-06 80 views
0

我被困在遞歸搜索中,我使用gwt,基本上我想搜索gwt樹中的節點,這裏是我的代碼。謝謝advance.I'm在遞歸:-(不好樹中的GWT搜索節點

public TreeItem search2(String sName, TreeItem node){ 
    TreeItem treeItem=null; 
    String sValue =""; 
    boolean bFound=false; 

    System.out.println("Father Node:" + node.getText() + " child nodes:" + node.getChildCount()); 


    for (int i=0;i<node.getChildCount();i++){ 

     treeItem = node.getChild(i); 
     sValue = treeItem.getText(); 
     System.out.println("searching...."+sValue); 
     if (sValue.equalsIgnoreCase(sName)){ 
      bFound=true; 
      System.out.println("!!found!!!!"+sName + " node to return:" + treeItem.getText()); 
      return treeItem; 
     } 
     else { 
      return search2(sName,treeItem); 
     } 
    }    

    return treeItem; 

} 
+1

你看到了什麼結果? – Ian

回答

1

我認爲錯誤是在該行return search2(sName,treeItem);。只有當發現一個匹配你應該返回......如果沒有找到匹配,那麼你要繼續檢查子節點的其餘試試這個:

public TreeItem search2(String sName, TreeItem node) { 
    if (node.getText().equalsIgnoreCase(sName) { 
     return node; 
    } 
    for (int i = 0; i < node.getChildCount(); i++) { 
     TreeItem treeItem = search2(sName, node.getChild(i)); 
     if (treeItem != null) { 
      return treeItem; 
     } 
    } 
    return null; 
} 

注:我編輯我的第一個答案,因爲它不會正確,如果有隻是一個節點(和節點文本匹配SNAME)工作。

Andy