Forest::Tree3pm
An n-ary tree
Usage
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");});
Overview
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
$childmust 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
notclone 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).
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.
Releases
8 releases since Debian 6.0 (Squeeze); the text changed 4 times.