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