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
- children
- 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 Infinity Interactive, Inc.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.