|
Tree::Binary::Visitor::PreOrderTraversal - Visitor object for Tree::Binary objects |
Tree::Binary::Visitor::PreOrderTraversal - Visitor object for Tree::Binary objects
use Tree::Binary; use Tree::Binary::Visitor::PreOrderTraversal;
# create a visitor instance my $visitor = Tree::Binary::Visitor::PreOrderTraversal->new();
# create a tree to visit
# this is an expression tree
# representing ((2 + 2) * (4 + 5))
my $btree = Tree::Binary->new("*")
->setLeft(Tree::Binary->new("+")
->setLeft(Tree::Binary->new("2"))
->setRight(Tree::Binary->new("2")))
->setRight(Tree::Binary->new("+")
->setLeft(Tree::Binary->new("4"))
->setRight(Tree::Binary->new("5")));
# by default this will collect all the # node values in depth-first order into # our results $tree->accept($visitor);
# get our results and print them print join ", ", $visitor->getResults(); # prints "*, +, 2, 2, + 4, 5"
# for more complex node objects, you can specify
# a node filter which will be used to extract the
# information desired from each node
$visitor->setNodeFilter(sub {
my ($t) = @_;
return $t->getNodeValue()->description();
});
For the most part, this class is just a wrapper around Tree::Binary's traverse method.
setNodeFilter method to customize its behavior.
setNodeFilter argument.
$filter_function argument. This code reference is used to filter the tree nodes as they are collected. This can be used to customize output, or to gather specific information from a more complex tree node. The filter function should accept a single argument, which is the current Tree::Binary object.
setResults with no argument.
visit method accepts a Tree::Binary and applies the function set in new or setNodeFilter appropriately. The results of this application can be retrieved with getResults
None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
See the CODE COVERAGE section of Tree::Binary for details.
stevan little, <stevan@iinteractive.com>
Copyright 2004, 2005 by Infinity Interactive, Inc.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
|
Tree::Binary::Visitor::PreOrderTraversal - Visitor object for Tree::Binary objects |