ym_data_tree 0.1.1 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Coverage Status](https://coveralls.io/repos/github/ismetsezer/ym_data_tree/badge.svg)](https://coveralls.io/github/ismetsezer/ym_data_tree)
|
3
|
-
|
4
3
|
[![Build Status](https://travis-ci.org/ismetsezer/ym_data_tree.svg?branch=master)](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: []
|