Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java非递归的通用树中搜索节点_Java_Recursion_Search_Tree - Fatal编程技术网

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

如何在java非递归的通用树中搜索节点,java,recursion,search,tree,Java,Recursion,Search,Tree,我是java新手,因此非常感谢您的建议。 我有一个类似于文件系统的树,其中包含文件和目录。我想按目录名查找目录。 组件是一个接口,文件和目录都实现了它。 为了找到一个名为name的目录,我在类目录中编写了这个方法 public Directory getDir(String name) { Iterator<Component> iterator = (Iterator<Component>) components.iterator();

我是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;
    }
公共目录getDir(字符串名){ 迭代器迭代器=(迭代器)组件。迭代器(); 组件=空; while(iterator.hasNext()){ component=iterator.next(); if(目录的组件实例){ if(component.getName().equals(name)){ 返回(目录)组件; } else-component.getDir(名称); } } 返回null; } 不知怎的,这个方法在找到我的目录后不会停止。 我试着写“
返回组件.getDir(name)
”,但没有用。它不会搜索节点的每个组件,只搜索第一个组件。 我做错了什么? 请帮帮我。 谢谢你

看起来像你的台词:
else组件。未检查getDir(名称)
的返回值。无论递归调用返回的是找到的目录还是null(未找到),下一步都将是循环中的另一轮

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