[][src]Function gamma::traversal::breadth_first

pub fn breadth_first<'a, G>(
    graph: &'a G,
    root: usize
) -> Result<BreadthFirst<'a, G>, Error> where
    G: Graph

Implements a breadth-first traversal as a Step Iterator.

use gamma::graph::{ Graph, Error, ArrayGraph, Step };
use gamma::traversal::breadth_first;
 
fn main() -> Result<(), Error> {
    let graph = ArrayGraph::from_adjacency(vec![
        vec![ 1, 3 ],
        vec![ 0, 2 ],
        vec![ 1, 3 ],
        vec![ 2, 0 ]
    ])?;
    let traversal = breadth_first(&graph, 0)?;
 
    assert_eq!(traversal.collect::<Vec<_>>(), vec![
        Step::new(0, 1, false),
        Step::new(0, 3, false),
        Step::new(1, 2, false),
        Step::new(3, 2, true)
    ]);
 
    Ok(())
}