Provided by: libforest-perl_0.10-1_all bug

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.