sub traversal { my $self = shift; my @nodes; # self is FIRST @nodes = ( $self ); foreach my $node ( @{ $self->{children} } ) { push @nodes, $node; $node->traversal(); } return @nodes;