有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

递归如何在通用树中搜索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)”,但没用。它不会搜索节点的每个组件,只搜索第一个组件。 我做错了什么? 请帮帮我。 多谢各位


共 (1) 个答案

  1. # 1 楼答案

    看起来像你的台词: ^未检查{}的返回值。无论递归调用返回的是找到的目录还是null(未找到任何内容),下一步都将是循环中的另一轮

    只需检查它是否返回NOTNULL,然后再次返回