Provided by: libforest-perl_0.10-1_all
NAME
Forest::Tree - An n-ary tree
SYNOPSIS
use Forest::Tree; my $t = Forest::Tree->new( node => 1, children => [ Forest::Tree->new( node => 1.1, children => [ Forest::Tree->new(node => 1.1.1), Forest::Tree->new(node => 1.1.2), Forest::Tree->new(node => 1.1.3), ] ), Forest::Tree->new(node => 1.2), Forest::Tree->new( node => 1.3, children => [ Forest::Tree->new(node => 1.3.1), Forest::Tree->new(node => 1.3.2), ] ), ] ); $t->traverse(sub { my $t = shift; print((' ' x $t->depth) . ($t->node || '\undef') . "\n"); });
DESCRIPTION
This module is a basic n-ary tree, it provides most of the functionality of Tree::Simple, whatever is missing will be added eventually. This class inherits from Forest::Tree::Pure>, but all shared methods and attributes are documented in both classes.
ATTRIBUTES
node uid parent parent _set_parent has_parent clear_parent children get_child_at ($index) Return the child at this position. (zero-base index) child_count Returns the number of children this tree has size size has_size clear_size height height has_height clear_height
METHODS
is_root True if the current tree has no parent is_leaf True if the current tree has no children depth Return the depth of this tree. Root has a depth of -1 add_child ($child) add_children (@children) Add a new child. The $child must be a "Forest::Tree" insert_child_at ($index, $child) Insert a child at this position. (zero-base index) remove_child_at ($index) Remove the child at this position. (zero-base index) traverse (\&func) Takes a reference to a subroutine and traverses the tree applying this subroutine to every descendant. siblings Returns an array reference of all siblings (not including us) to_pure_tree Invokes "reconstruct_with_class" with Forest::Tree::Pure. to_mutable_tree Returns the invocant (without cloning). clone See "clone" in Forest::Tree::Pure. This variant will not clone the parent, but return a clone of the subtree that is detached. get_index_in_siblings Returns the index of the tree in the list of children. Equivalent to calling "$tree-"parent->get_child_index($tree)>. Returns -1 if the node has no parent (the root node).
BUGS
All complex software has bugs lurking in it, and this module is no exception. If you find a bug please either email me, or add the bug to cpan-RT.
AUTHOR
Stevan Little <stevan.little@iinteractive.com>
COPYRIGHT AND LICENSE
Copyright 2008-2014 Infinity Interactive, Inc. <http://www.iinteractive.com> This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.