Struct petgraph::visit::Bfs [−][src]
pub struct Bfs<N, VM> {
pub stack: VecDeque<N>,
pub discovered: VM,
}
Expand description
A breadth first search (BFS) of a graph.
The traversal starts at a given node and only traverses nodes reachable from it.
Bfs
is not recursive.
Bfs
does not itself borrow the graph, and because of this you can run
a traversal over a graph while still retaining mutable access to it, if you
use it like the following example:
use petgraph::Graph;
use petgraph::visit::Bfs;
let mut graph = Graph::<_,()>::new();
let a = graph.add_node(0);
let mut bfs = Bfs::new(&graph, a);
while let Some(nx) = bfs.next(&graph) {
// we can access `graph` mutably here still
graph[nx] += 1;
}
assert_eq!(graph[a], 1);
Note: The algorithm may not behave correctly if nodes are removed during iteration. It may not necessarily visit added nodes or edges.
Fields
stack: VecDeque<N>
The queue of nodes to visit
discovered: VM
The map of discovered nodes
Implementations
Create a new Bfs, using the graph’s visitor map, and put start in the stack of nodes to visit.
Return the next node in the bfs, or None if the traversal is done.
Trait Implementations
fn iter(self, context: Context) -> WalkerIter<Self, Context>ⓘNotable traits for WalkerIter<W, C>impl<W, C> Iterator for WalkerIter<W, C> where
W: Walker<C>,
C: Clone, type Item = W::Item;
where
Self: Sized,
Context: Clone,
fn iter(self, context: Context) -> WalkerIter<Self, Context>ⓘNotable traits for WalkerIter<W, C>impl<W, C> Iterator for WalkerIter<W, C> where
W: Walker<C>,
C: Clone, type Item = W::Item;
where
Self: Sized,
Context: Clone,
impl<W, C> Iterator for WalkerIter<W, C> where
W: Walker<C>,
C: Clone, type Item = W::Item;
Create an iterator out of the walker and given context
.
Auto Trait Implementations
impl<N, VM> RefUnwindSafe for Bfs<N, VM> where
N: RefUnwindSafe,
VM: RefUnwindSafe,
impl<N, VM> UnwindSafe for Bfs<N, VM> where
N: UnwindSafe,
VM: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more