Stevan Little > Forest-0.07 > Forest::Tree

Download:
Forest-0.07.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
Report a bug
Module Version: 0.07   Source  

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.

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

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