sub search { my ($tree, $val) = @_; return $tree if $val < $tree->{weight}; $val -= $tree->{weight}; return search($tree->{left}, $val) if $val < $tree->{left}->{total_weght}; $val -= $tree->{left}->{total_weight}; return search($tree->{right}, $val); }