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 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 newSuccessors); }