递归如何在通用树中搜索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 楼答案
看起来像你的台词: ^未检查{}的返回值。无论递归调用返回的是找到的目录还是null(未找到任何内容),下一步都将是循环中的另一轮
只需检查它是否返回NOTNULL,然后再次返回