Postorder

Score: 110.08 (pass)

I suck. :(

#!perl
sub
t{if(@p&&(my$k=pop)>($m=index$ARGV[0],$p[0])){my$x=shift@p;t($m);t($k);print$x}}t
1+(@p=pop=~/./g);print$/

Score: 113.09 (pass)

#!perl -l
sub
t{if(@p&&(my$k=pop)>($m=index$ARGV[0],$p[0])){my$z=shift@p;grep$_,t($m),t($k),$z}}print t 1+(@p=pop=~/./g)

Score: 114.09 (pass)

#!perl -l
sub
t{my$k=pop;if(@p&&$k>($m=index$ARGV[0],$p[0])){my$z=shift@p;t($m),t($k),$z}}print grep$_,t 1+(@p=pop=~/./g)

Score: 117.09 (pass)

#!perl -l
sub
t($){my$k=pop;if(@p&&$k>($m=index$ARGV[0],$p[0])){my$z=shift@p;t($m),t($k),$z}}print grep$_,t 1+(@p=pop=~/./g)

Score: 134.09 (pass)

Prettification

#!perl -l
sub
t{my$k=pop;($m)=grep$i[$_]eq$p[0],0..@i;if(@p&&$k>$m){my$z=shift@p;t($m);t($k);$_.=$z}}@$_=split'',pop for\@i,\@p;t(@i+1);print

Score: 274.18 (pass)

Need I say it's only a first try?

#!perl -l
@i = split'',pop;
@p= split'',pop;

t( grep $in[$_]eq$p[0],0..@in  );
t( @i+1 );

sub t
{
        my $k = shift;
        my( $m) = grep $i[$_]eq$p[0],0..@i;
    return if !@p  or $k <= $m ;
        my $z=shift@p;
        t( $m );
        t( $k );
        $w.=$z;
}
print $w