如何在Java非递归中搜索一般树中的节点

问题描述 投票:0回答:1

我是 Java 新手,所以任何建议将不胜感激。
我有一个包含文件和目录的树状文件系统。我想通过名称查找目录。 组件是一个接口,文件和目录都实现了它。 我在类 Directory 中编写了这个方法,以便找到名为 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)
”,但没有帮助。它不会搜索节点的每个组件,只会搜索第一个组件。 我究竟做错了什么? 请帮我。 谢谢你

java recursion search tree
1个回答
1
投票

看起来像你的台词: 不检查

else component.getDir(name)
的返回值。无论递归调用返回找到的目录还是 null(未找到任何内容),下一步都将是循环中的另一轮。

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

© www.soinside.com 2019 - 2024. All rights reserved.