ym_data_tree 0.1.1 → 1.1.2
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.
- checksums.yaml +4 -4
- data/README.md +24 -15
- data/lib/ym_data_tree.rb +97 -26
- data/lib/ym_data_tree/version.rb +1 -1
- data/ym_data_tree.gemspec +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b27163e53172ca6299947a4e9bce35fe32c26f5f
|
4
|
+
data.tar.gz: '001361842e0397f742ae8510f3131cb9a4b39e7c'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9e96bafb2390133921c8ff4ea186a82a6e80b2297205c8efb3eb7002aef4d2ef10d5655286f7456da29411c1186867d246fbf7e77561e98d693dcdc06268162
|
7
|
+
data.tar.gz: 7fad6ff5524be9f9303d6d3bea5bddd432acb92ac5ff32c9f1414f5eb3a26cee31ddbc62bc6f296507faf767228ae98c1f3bd6c1a8eb81fc034082eaa0b609ef
|
data/README.md
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# YmDataTree
|
2
2
|
[](https://coveralls.io/github/ismetsezer/ym_data_tree)
|
3
|
-
|
4
3
|
[](https://travis-ci.org/ismetsezer/ym_data_tree)
|
5
4
|
## Installation
|
6
5
|
|
@@ -10,14 +9,14 @@ gem 'ym_data_tree'
|
|
10
9
|
|
11
10
|
And then execute:
|
12
11
|
|
13
|
-
$ bundle
|
12
|
+
$ bundle install
|
14
13
|
|
15
14
|
Or install it yourself as:
|
16
15
|
|
17
16
|
$ gem install ym_data_tree
|
18
17
|
|
19
18
|
## Usage
|
20
|
-
*In Order Traversal Example*
|
19
|
+
*In Order/ Post Order / Pre Order Traversal Example*
|
21
20
|
```ruby
|
22
21
|
require 'ym_data_tree'
|
23
22
|
tree = YmDataTree::Tree.new
|
@@ -26,13 +25,18 @@ Or install it yourself as:
|
|
26
25
|
tree.insert(data)
|
27
26
|
end
|
28
27
|
#Then Traverse The Tree
|
29
|
-
tree.
|
30
|
-
print in_order_traversal_datas = tree.getDatas
|
31
|
-
|
28
|
+
tree.traverse(tree.root,:in_order_traversal)
|
32
29
|
#->[5,6,8,10,11,12,15]
|
30
|
+
|
31
|
+
tree.traverse(tree.root,:pre_order_traversal)
|
32
|
+
#->[10,6,5,8,12,11,15]
|
33
|
+
|
34
|
+
tree.traverse(tree.root,:post_order_traversal)
|
35
|
+
|
36
|
+
#->[5,8,6,11,15,12]
|
33
37
|
```
|
34
38
|
|
35
|
-
*
|
39
|
+
*Breadth First Traversal*
|
36
40
|
```ruby
|
37
41
|
require 'ym_data_tree'
|
38
42
|
tree = YmDataTree::Tree.new
|
@@ -40,12 +44,12 @@ datas = [10,6,8,5,12,11,15]
|
|
40
44
|
datas.each do |data|
|
41
45
|
tree.insert(data)
|
42
46
|
end
|
43
|
-
tree.pre_order_traversal(tree.root)
|
44
|
-
print pre_order_traversal_datas = tree.getDatas
|
45
47
|
|
46
|
-
|
48
|
+
tree.traverse(tree.root,:breadth_first_traversal)
|
49
|
+
#->[10,6,12,8,11,5,15]
|
50
|
+
|
47
51
|
```
|
48
|
-
|
52
|
+
|
49
53
|
```ruby
|
50
54
|
require 'ym_data_tree'
|
51
55
|
tree = YmDataTree::Tree.new
|
@@ -53,12 +57,17 @@ datas = [10,6,8,5,12,11,15]
|
|
53
57
|
datas.each do |data|
|
54
58
|
tree.insert(data)
|
55
59
|
end
|
56
|
-
tree.post_order_traversal(tree.root)
|
57
|
-
print post_order_traversal_datas = tree.getDatas
|
58
60
|
|
59
|
-
|
60
|
-
|
61
|
+
tree.traverse(tree.root,:deep_first_traversal,:pre_order_traversal)
|
62
|
+
#-> [6, 5, 8, 10, 12, 11, 15]
|
63
|
+
|
64
|
+
tree.traverse(tree.root,:deep_first_traversal,:in_order_traversal)
|
65
|
+
#-> [5, 6, 8, 10, 11, 12, 15]
|
61
66
|
|
67
|
+
tree.traverse(tree.root,:deep_first_traversal,:post_order_traversal)
|
68
|
+
|
69
|
+
#->[5, 8, 6, 10, 11, 15, 12]
|
70
|
+
```
|
62
71
|
|
63
72
|
|
64
73
|
## Contributing
|
data/lib/ym_data_tree.rb
CHANGED
@@ -5,10 +5,13 @@ module YmDataTree
|
|
5
5
|
class Tree
|
6
6
|
def initialize
|
7
7
|
@root = nil
|
8
|
-
@in_order_traversal_datas =
|
8
|
+
@in_order_traversal_datas = []
|
9
|
+
@post_order_traversal_datas = []
|
10
|
+
@pre_order_traversal_datas = []
|
9
11
|
end
|
10
12
|
attr_accessor :root
|
11
13
|
def insert(data)
|
14
|
+
|
12
15
|
@tempNode = Node.new
|
13
16
|
@tempNode.data = data
|
14
17
|
if @root == nil
|
@@ -35,35 +38,103 @@ module YmDataTree
|
|
35
38
|
end
|
36
39
|
end
|
37
40
|
end
|
38
|
-
def
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
in_order_traversal(node.rightChild)
|
43
|
-
end
|
41
|
+
def clear
|
42
|
+
@pre_order_traversal_datas = []
|
43
|
+
@in_order_traversal_datas = []
|
44
|
+
@post_order_traversal_datas = []
|
44
45
|
end
|
45
|
-
def
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
46
|
+
def traverse(node,*command)
|
47
|
+
clear
|
48
|
+
if command.first.eql? :pre_order_traversal
|
49
|
+
pre_order_traversal(node)
|
50
|
+
elsif command.first.eql? :in_order_traversal
|
51
|
+
in_order_traversal(node)
|
52
|
+
elsif command.first.eql? :post_order_traversal
|
53
|
+
post_order_traversal(node)
|
54
|
+
elsif command.first.eql? :breadth_first_traversal
|
55
|
+
breadth_first_traversal(node)
|
56
|
+
elsif command.first.eql? :deep_first_traversal
|
57
|
+
deep_first_traversal(self,command[1])
|
58
|
+
else
|
59
|
+
puts "Unknown Command"
|
50
60
|
end
|
51
61
|
end
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
62
|
+
|
63
|
+
##PRIVATE METHODS
|
64
|
+
private
|
65
|
+
def in_order_traversal(node)
|
66
|
+
if node != nil
|
67
|
+
in_order_traversal(node.leftChild)
|
68
|
+
@in_order_traversal_datas.push(node.data)
|
69
|
+
in_order_traversal(node.rightChild)
|
70
|
+
end
|
71
|
+
@in_order_traversal_datas
|
72
|
+
end
|
73
|
+
def post_order_traversal(node)
|
74
|
+
if node != nil
|
75
|
+
post_order_traversal(node.leftChild)
|
76
|
+
post_order_traversal(node.rightChild)
|
77
|
+
@post_order_traversal_datas.push(node.data)
|
78
|
+
end
|
65
79
|
@post_order_traversal_datas
|
66
80
|
end
|
67
|
-
|
81
|
+
def pre_order_traversal(node)
|
82
|
+
if node != nil
|
83
|
+
@pre_order_traversal_datas.push(node.data)
|
84
|
+
pre_order_traversal(node.leftChild)
|
85
|
+
pre_order_traversal(node.rightChild)
|
86
|
+
end
|
87
|
+
@pre_order_traversal_datas
|
88
|
+
end
|
89
|
+
def breadth_first_traversal(node)
|
90
|
+
if node != nil
|
91
|
+
@ordered = [node]
|
92
|
+
@quequ = []
|
93
|
+
@datas = [node.data]
|
94
|
+
count = 0
|
95
|
+
while count < 2
|
96
|
+
@ordered.each do |node|
|
97
|
+
if node != nil
|
98
|
+
if node.leftChild != nil
|
99
|
+
@quequ.push(node.leftChild)
|
100
|
+
@datas.push(node.leftChild.data)
|
101
|
+
end
|
102
|
+
if node.rightChild != nil
|
103
|
+
@quequ.push(node.rightChild)
|
104
|
+
@datas.push(node.rightChild.data)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
@ordered = @quequ
|
109
|
+
count += 1
|
110
|
+
end
|
111
|
+
@datas
|
112
|
+
end
|
113
|
+
end
|
114
|
+
def deep_first_traversal(tree,command)
|
115
|
+
@datas = []
|
116
|
+
@datas_left = []
|
117
|
+
@datas_right = []
|
118
|
+
node = tree.root
|
119
|
+
if node != nil
|
120
|
+
@left = node.leftChild
|
121
|
+
@rigth = node.rightChild
|
122
|
+
if command.eql? :pre_order_traversal
|
123
|
+
@datas_left = tree.traverse(@left,command)
|
124
|
+
@datas_right = tree.traverse(@rigth,command)
|
125
|
+
elsif command.eql? :in_order_traversal
|
126
|
+
@datas_left = tree.traverse(@left,command)
|
127
|
+
@datas_right = tree.traverse(@rigth,command)
|
128
|
+
elsif command.eql? :post_order_traversal
|
129
|
+
@datas_left = tree.traverse(@left,command)
|
130
|
+
@datas_right = tree.traverse(@rigth,command)
|
131
|
+
end
|
132
|
+
@datas_left.each{|data| @datas.push(data)}
|
133
|
+
@datas.push(node.data)
|
134
|
+
@datas_right.each{|data| @datas.push(data)}
|
135
|
+
@datas
|
136
|
+
end
|
137
|
+
end
|
138
|
+
#PRIVATE METHODS
|
68
139
|
end
|
69
140
|
end
|
data/lib/ym_data_tree/version.rb
CHANGED
data/ym_data_tree.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["ismetsezer1996@gmail.com"]
|
11
11
|
|
12
12
|
spec.summary = %q{Ym-Data-Tree}
|
13
|
-
spec.description = %q{
|
13
|
+
spec.description = %q{In Order Traversal , Pre Order Traversal , Post Order Traversal,Breadth First Traversal , Deep Search Traversal}
|
14
14
|
spec.homepage = "https://www.github.com/ismetsezer/ym_data_tree"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ym_data_tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ismet Sezer Simsek
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -94,7 +94,8 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
-
description:
|
97
|
+
description: In Order Traversal , Pre Order Traversal , Post Order Traversal,Breadth
|
98
|
+
First Traversal , Deep Search Traversal
|
98
99
|
email:
|
99
100
|
- ismetsezer1996@gmail.com
|
100
101
|
executables: []
|