added lab16 ex3
This commit is contained in:
27
src/lab16_composite/ex3/algorithm/TraversalAlgorithm.java
Normal file
27
src/lab16_composite/ex3/algorithm/TraversalAlgorithm.java
Normal file
@@ -0,0 +1,27 @@
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user