java - 我搜索非二叉树(n 叉树)的方法有什么问题?

标签 java search

嗨,我有这段代码来搜索 n 叉树,但它不能正常工作,我不知道这有什么问题 当搜索 n4 和 n5 时,它返回 n3 怎么了? enter image description here

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;
    }

最佳答案

原因是因为你返回了找到节点的节点。一旦找到节点,就需要返回该节点,如果找到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;
}

关于java - 我搜索非二叉树(n 叉树)的方法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11373249/

相关文章:

java - 在 Spring 3.0 异常处理程序中获取上下文信息

java - Spring 和 SWT 可以一起用于 Java 桌面应用程序吗?

java - 显示倒金字塔

java - Batch Entry 0 insert into PGSQL-调用getNextException查看原因

search - 知情和不知情的搜索有什么区别?

Java Maze Solver - 我从来没有这么卡过

javascript - 检查浏览器中是否启用了 javascript

json - 使用 Google 自定义搜索 API 获取 Google 图片中图片的 URL?

algorithm - 在键入字符时搜索字符串

javascript - 遍历大对象也返回空值