2012-07-07 60 views
1

嗨我有此代码来搜索n-ary树,但它dosent工作正常,我不知道什么是错的 当搜索n4和n5它返回n3 最新错误? enter image description here我的搜索非二叉树(n-ary树)的方法有什么问题?

public FamilyNode findNodeByName(FamilyNode nodeName){ 
     if(this.name.equals(nodeName.name)){ 
      // We found a node named nodeName, return it 
      return this; 
     } 
     // That's not me that you are looking for, let's see my kids 

      for(FamilyNode child : this.children){ 
      if(child.findNodeByName(nodeName) != null) 
       return child; 
       // We found what we are looking, just return from here 
      // return child; 

     } 
     // Finished looping over all nodes and did not find any, return null 
     return null; 
    } 

回答

1

的原因是因为你给回其中一个节点被发现的节点。找到节点后,需要返回此节点,如果发现FamilyNode,则父节点需要返回找到的FamilyNode。检查found变量做了什么。

你需要做这样的事情:

FamilyNode found = child.findNodeByName(nodeName); 
if(found != null) 
    return found; 

整个方法是这样的:

public FamilyNode findNodeByName(FamilyNode nodeName){ 
    if(this.name.equals(nodeName.name)){ 
     return this; 
    } 
    for(FamilyNode child : this.children){ 
     FamilyNode found = child.findNodeByName(nodeName); 
     if(found != null) 
      return found; 
    } 
    return null; 
} 
+0

吴THX的男人,你是对的THX很多 – Oli 2012-07-07 08:00:27

+0

欢迎你! – 2012-07-07 08:14:38