logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Forest::Tree - An n-ary tree

Attributes

nodeuidparentparent_set_parenthas_parentclear_parentchildrenget_child_at($index)
               Return the child at this position. (zero-base index)

           child_count
               Returns the number of children this tree has

       sizesizehas_sizeclear_sizeheightheighthas_heightclear_height

Author

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.

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.

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).

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");
         });

See Also