ruby-trees 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8c46d50f759c29830b4392720ea15d38fc1faada
4
+ data.tar.gz: 928e422a543ad189b7c38cbce1d13f51b91197e8
5
+ SHA512:
6
+ metadata.gz: ff8c1a95bc9162440ce61c9a45fbd6ddab782c4a69ee75e8e2e27bcbb2bf164060478280341f5d4fa8bbba6eeb78003a14fc66525d081dbd05b36da6a4f2939b
7
+ data.tar.gz: 5d2874ac5c73f9afd9416901195fd51deac7b32536b91feeb12a12a11833f4fdabb40bf0cde8e1f6330cc630120c3de1394603e9202841970fb8b8bccbc29b0c
@@ -0,0 +1,6 @@
1
+ require "trees/version"
2
+
3
+ module Trees
4
+ # Your code goes here...
5
+ end
6
+
@@ -0,0 +1 @@
1
+ require File.expand_path('../binary/node', __FILE__)
@@ -0,0 +1,4 @@
1
+ module Trees
2
+ module Binary
3
+ end
4
+ end
@@ -0,0 +1,51 @@
1
+ require File.expand_path('../node_heplers', __FILE__)
2
+ require File.expand_path('../search_heplers', __FILE__)
3
+
4
+ module Trees
5
+ module Binary
6
+ class Node
7
+ include NodeHelpers
8
+ include SearchHelpers
9
+
10
+ attr_accessor :parent, :left, :right
11
+ attr_accessor :data
12
+
13
+ def initialize(data, parent: nil)
14
+ self.parent = parent
15
+ self.data = data
16
+ end
17
+
18
+ def root?
19
+ parent.nil? ? true : false
20
+ end
21
+
22
+ def insert(value)
23
+ case data <=> value
24
+ when 1 then insert_left(value)
25
+ when -1 then insert_right(value)
26
+ when 0 then false
27
+ end
28
+ end
29
+
30
+ alias :<< :insert
31
+
32
+ private
33
+
34
+ def insert_left(value)
35
+ if left
36
+ left.insert(value)
37
+ else
38
+ self.left = Node.new(value, parent: self)
39
+ end
40
+ end
41
+
42
+ def insert_right(value)
43
+ if right
44
+ right.insert(value)
45
+ else
46
+ self.right = Node.new(value, parent: self)
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,9 @@
1
+ module Trees
2
+ module Binary
3
+ module NodeHelpers
4
+ def inspect
5
+ "{#{data}::#{left.nil? ? "nil" : left.inspect}|#{right.nil? ? "nil" : right.inspect}}"
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ module Trees
2
+ module Binary
3
+ module SearchHelpers
4
+ def include?(value)
5
+ case data <=> value
6
+ when 1 then left.include? value
7
+ when -1 then right.include? value
8
+ when 0 then true
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ module Trees
2
+ VERSION = "0.1.0"
3
+ end
4
+
5
+
metadata ADDED
@@ -0,0 +1,79 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby-trees
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Max
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-05-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.11'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.11'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description: Ruby trees
42
+ email:
43
+ - max24.for@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - "./lib/trees.rb"
49
+ - "./lib/trees/all.rb"
50
+ - "./lib/trees/binary.rb"
51
+ - "./lib/trees/binary/node.rb"
52
+ - "./lib/trees/binary/node_heplers.rb"
53
+ - "./lib/trees/binary/search_heplers.rb"
54
+ - "./lib/trees/version.rb"
55
+ homepage: https://github.com/putcode/ruby-trees
56
+ licenses:
57
+ - MIT
58
+ metadata: {}
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ requirements: []
74
+ rubyforge_project:
75
+ rubygems_version: 2.4.8
76
+ signing_key:
77
+ specification_version: 4
78
+ summary: Ruby trees
79
+ test_files: []