Class BoundedBFSIterator<T>

java.lang.Object
com.ibm.wala.util.graph.traverse.BoundedBFSIterator<T>
All Implemented Interfaces:
Iterator<T>

public class BoundedBFSIterator<T> extends Object implements Iterator<T>
This class implements breadth-first search over a Graph, returning an Iterator of the nodes of the graph in order of discovery. This class follows the outNodes of the graph nodes to define the graph, but this behavior can be changed by overriding the getConnected method.

This traversal only visits nodes within k hops of a root.

  • Field Details

    • G

      protected Graph<T> G
      Governing Graph
  • Constructor Details

    • BoundedBFSIterator

      public BoundedBFSIterator(Graph<T> G, T N, int k)
      Construct a breadth-first iterator starting with a particular node in a directed graph.
      Parameters:
      G - the graph whose nodes to enumerate
      Throws:
      IllegalArgumentException - if G is null
    • BoundedBFSIterator

      public BoundedBFSIterator(Graph<T> G, Iterator<? extends T> nodes, int k)
      Construct a breadth-first enumerator across the (possibly improper) subset of nodes reachable from the nodes in the given enumeration.
      Parameters:
      G - the graph whose nodes to enumerate
      nodes - the set of nodes from which to start searching
      Throws:
      IllegalArgumentException - if G is null
  • Method Details

    • hasNext

      public boolean hasNext()
      Return whether there are any more nodes left to enumerate.
      Specified by:
      hasNext in interface Iterator<T>
      Returns:
      true if there nodes left to enumerate.
    • next

      public T next() throws NoSuchElementException
      Find the next graph node in discover time order.
      Specified by:
      next in interface Iterator<T>
      Returns:
      the next graph node in discover time order.
      Throws:
      NoSuchElementException
    • getConnected

      protected Iterator<? extends T> getConnected(T n)
      get the out edges of a given node
      Parameters:
      n - the node of which to get the out edges
      Returns:
      the out edges
    • remove

      public void remove() throws UnsupportedOperationException
      Specified by:
      remove in interface Iterator<T>
      Throws:
      UnsupportedOperationException
    • getCurrentHops

      public int getCurrentHops()
      Returns:
      the currentHops