diff options
Diffstat (limited to 'perllib/Graph/Traversal/DFS.pm')
-rw-r--r-- | perllib/Graph/Traversal/DFS.pm | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/perllib/Graph/Traversal/DFS.pm b/perllib/Graph/Traversal/DFS.pm new file mode 100644 index 00000000..4b109bd8 --- /dev/null +++ b/perllib/Graph/Traversal/DFS.pm @@ -0,0 +1,59 @@ +package Graph::Traversal::DFS; + +use strict; + +use Graph::Traversal; +use base 'Graph::Traversal'; + +sub current { + my $self = shift; + $self->{ order }->[ -1 ]; +} + +sub see { + my $self = shift; + pop @{ $self->{ order } }; +} + +*dfs = \&Graph::Traversal::postorder; + +1; +__END__ +=pod + +=head1 NAME + +Graph::Traversal::DFS - depth-first traversal of graphs + +=head1 SYNOPSIS + + use Graph; + my $g = Graph->new; + $g->add_edge(...); + use Graph::Traversal::DFS; + my $d = Graph::Traversal::DFS->new(%opt); + $d->dfs; # Do the traversal. + +=head1 DESCRIPTION + +With this class one can traverse a Graph in depth-first order. + +The callback parameters %opt are explained in L<Graph::Traversal>. + +=head2 Methods + +The following methods are available: + +=over 4 + +=item dfs + +Traverse the graph in depth-first order. + +=back + +=head1 SEE ALSO + +L<Graph::Traversal>, L<Graph::Traversal::BFS>, L<Graph>. + +=cut |