【问题标题】:how to search in a general tree a node in java nonrecursive如何在一般树中搜索java非递归中的节点
【发布时间】:2019-05-22 19:30:59
【问题描述】:

我是 java 新手,所以每一个建议都会非常感激。
我有一棵树,比如带有文件和目录的文件系统。我想按名称查找目录。 组件是一个接口,文件和目录都实现了它。 我在类 Directory 中编写了这个方法,以便找到一个名为 name 的 Directory。

    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】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-01-26
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多