28 lines
794 B
Java
28 lines
794 B
Java
package lab16_composite.ex3.algorithm;
|
|
|
|
import lab16_composite.ex3.component.Component;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
public abstract class TraversalAlgorithm {
|
|
protected List<Component> successors = new ArrayList<>();
|
|
|
|
public Component search(Component root, String target) {
|
|
successors = new ArrayList<>();
|
|
successors.add(root);
|
|
while (true) {
|
|
if (successors.isEmpty()) {
|
|
return null;
|
|
}
|
|
Component component = successors.removeFirst();
|
|
if (component.getName().equals(target)) {
|
|
return component;
|
|
}
|
|
addSuccessor(component.getChildren());
|
|
}
|
|
}
|
|
|
|
protected abstract void addSuccessor(ArrayList<Component> newSuccessors);
|
|
}
|