2013-02-06 166 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