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