Sha256: c0ea4b7fb243c99e5ffca9452e321e697948a6a1e49b0aa4e879baf275fef9a1

Contents?: true

Size: 828 Bytes

Versions: 73

Compression:

Stored size: 828 Bytes

Contents

package BinarySearchTree;

use warnings;
use strict;

sub new {
  my ($class, $value) = @_;

  $class = ref $class if ref $class;
  bless { data => $value, }, $class;
}

sub data {
  my ($self) = @_;
  return $self->{data};
}

sub left {
  my ($self) = @_;

  $self->{left} ||= $self->new();
  return $self->{left};
}

sub right {
  my ($self) = @_;

  $self->{right} ||= $self->new();
  return $self->{right};
}

sub insert {
  my ($self, $value) = @_;

  if ($self->{data}) {
    if ($value <= $self->{data}) {
      $self->left->insert($value);
    } else {
      $self->right->insert($value);
    }
  } else {
    $self->{data} = $value;
  }
}

sub each {
  my ($self, $sub) = @_;

  $self->left->each($sub)  if $self->{left};
  $sub->($self->{data})    if $self->{data};
  $self->right->each($sub) if $self->{right};
}

1;

Version data entries

73 entries across 73 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.179 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.178 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.177 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.176 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.175 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.174 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.173 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.172 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.171 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.170 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.169 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.167 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.166 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.165 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.164 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.163 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.162 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.161 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm
trackler-2.2.1.160 tracks/perl5/exercises/binary-search-tree/.meta/solutions/BinarySearchTree.pm