如何在通用树中搜索 Java 非递归节点



我是Java的新手,所以任何建议将不胜感激.
我有一个树状文件系统,其中包含文件和目录。我想按名称查找目录。组件是一个接口,文件和目录都实现它。我在类目录中编写了此方法,以便找到一个名为 name 的目录。

public Directory getDir(String name) {
    Iterator<Component> iterator = (Iterator<Component>)components.iterator();
    Component component = null; 
    while(iterator.hasNext()) {
        component = iterator.next();
        if(component instanceof Directory) {
            if(component.getName().equals(name))
                return (Directory) component;
            else component.getDir(name);
         }
     }  
    return null;
}

不知何故,找到我的目录后,此方法不会停止。我试着写"return component.getDir(name)",但没有帮助。它不会搜索节点的每个组件,只会搜索第一个组件。我做错了什么?请帮助我。谢谢

看起来像你的行: 不检查else component.getDir(name)的返回值。无论递归调用返回的是找到的目录还是 null(未找到),接下来的事情将是循环中的另一轮。

只需检查它是否返回不为 null,然后再次返回。

最新更新