Reconstruct a binary tree given two sequences of node traversals, one from inorder and one from postorder traversal.
Anonymous
sub recon { my ( $in, $post ) = @_; return undef unless @$in; if ( @$in == 1 ) { return +{ value => $in->[0], }; } my $root = pop @$post; my $bst = +{ value => $root }; for ( my $i = 0; $i [$i] == $root; $bst->{left} = recon( [ ( @$in )[0..$i-1] ], [ ( @$post )[0..$i-1] ] ); $bst->{right} = recon( [ ( @$in )[$i+1..@$in-1] ], [ ( @$post )[$i..@$post-1] ] ); } return $bst; }
Check out your Company Bowl for anonymous work chats.