[][src]Function gamma::traversal::depth_first

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

Implements a depth-first traversal as a Step Iterator.

use gamma::graph::{ Graph, Error, ArrayGraph, Step };
use gamma::traversal::depth_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 = depth_first(&graph, 0)?;
 
    assert_eq!(traversal.collect::<Vec<_>>(), vec![
        Step::new(0, 1, false),
        Step::new(1, 2, false),
        Step::new(2, 3, false),
        Step::new(3, 0, true)
    ]);
 
    Ok(())
}