Package com.ibm.wala.util.graph.traverse
Class DFSPathFinder<T>
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractList<E>
-
- java.util.ArrayList<T>
-
- com.ibm.wala.util.graph.traverse.DFSPathFinder<T>
-
- All Implemented Interfaces:
Serializable,Cloneable,Iterable<T>,Collection<T>,List<T>,RandomAccess
- Direct Known Subclasses:
DFSAllPathsFinder
public class DFSPathFinder<T> extends ArrayList<T>
This class searches depth-first search for node that matches some criteria. If found, it reports a path to the first node found.This class follows the outNodes of the graph nodes to define the graph, but this behavior can be changed by overriding the getConnected method.
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected Graph<T>GThe graph to searchprotected Map<Object,Iterator<? extends T>>pendingChildrenAn iterator of child nodes for each node being searchedstatic longserialVersionUID-
Fields inherited from class java.util.AbstractList
modCount
-
-
Constructor Summary
Constructors Constructor Description DFSPathFinder(Graph<T> G, Iterator<T> nodes, Predicate<T> f)Construct a depth-first enumerator across the (possibly improper) subset of nodes reachable from the nodes in the given enumeration.DFSPathFinder(Graph<T> G, T N, Predicate<T> f)Construct a depth-first enumerator starting with a particular node in a directed graph.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected List<T>currentPath()@Nullable List<T>find()protected Iterator<? extends T>getConnected(T n)get the out edges of a given nodeprotected @Nullable Iterator<? extends T>getPendingChildren(T n)Method getPendingChildren.booleanhasNext()Return whether there are any more nodes left to enumerate.protected voidsetPendingChildren(T v, Iterator<? extends T> iterator)Method setPendingChildren.-
Methods inherited from class java.util.ArrayList
add, add, addAll, addAll, clear, clone, contains, ensureCapacity, equals, forEach, get, hashCode, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, remove, removeAll, removeIf, removeRange, replaceAll, retainAll, set, size, sort, spliterator, subList, toArray, toArray, trimToSize
-
Methods inherited from class java.util.AbstractCollection
containsAll, toString
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.util.Collection
parallelStream, stream, toArray
-
Methods inherited from interface java.util.List
containsAll
-
-
-
-
Constructor Detail
-
DFSPathFinder
public DFSPathFinder(Graph<T> G, T N, Predicate<T> f) throws IllegalArgumentException
Construct a depth-first enumerator starting with a particular node in a directed graph.- Parameters:
G- the graph whose nodes to enumerate- Throws:
IllegalArgumentException- if G is null
-
-
Method Detail
-
find
public @Nullable List<T> find()
- Returns:
- a List of nodes that specifies the first path found from a root to a node accepted by the filter. Returns null if no path found.
-
hasNext
public boolean hasNext()
Return whether there are any more nodes left to enumerate.- Returns:
- true if there nodes left to enumerate.
-
getPendingChildren
protected @Nullable Iterator<? extends T> getPendingChildren(T n)
Method getPendingChildren.- Returns:
- Object
-
setPendingChildren
protected void setPendingChildren(T v, Iterator<? extends T> iterator)
Method setPendingChildren.
-
-