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