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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 498e3b6c92058c482c10dd23ffc8f38bfa241c08
4
- data.tar.gz: fe32fd6ec527e9dfcb1b1525b2b89acf0cc11ad0
3
+ metadata.gz: b27163e53172ca6299947a4e9bce35fe32c26f5f
4
+ data.tar.gz: '001361842e0397f742ae8510f3131cb9a4b39e7c'
5
5
  SHA512:
6
- metadata.gz: 8b3fb56aff5022b65aa523fefe2f1712989a44ead4d220bd200ab7812c86477dba883e9fed16914561f25598bd2999def62ba5fae5709dbf560062d36f3dd843
7
- data.tar.gz: e49d8d47391e96e8958f406ea357e87206b8a3121be24bec56c058fa479a198af84a1e482288b0aebf9f2814d5bc4582ef67f727f7b2b621c6d7e918d37aff68
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.in_order_traversal(tree.root)
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
- *Pre Order Traversal Example*
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
- #-> [10,6,5,8,12,11,15]
48
+ tree.traverse(tree.root,:breadth_first_traversal)
49
+ #->[10,6,12,8,11,5,15]
50
+
47
51
  ```
48
- *Post Order Traversal Example*
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
- #-> [5,8,6,11,15,12]
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
@@ -5,10 +5,13 @@ module YmDataTree
5
5
  class Tree
6
6
  def initialize
7
7
  @root = nil
8
- @in_order_traversal_datas = @post_order_traversal_datas = @pre_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 in_order_traversal(node)
39
- if node != nil
40
- in_order_traversal(node.leftChild)
41
- @in_order_traversal_datas.push(node.data)
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 post_order_traversal(node)
46
- if node != nil
47
- post_order_traversal(node.leftChild)
48
- post_order_traversal(node.rightChild)
49
- @post_order_traversal_datas.push(node.data)
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
- def pre_order_traversal(node)
53
- if node != nil
54
- @pre_order_traversal_datas.push(node.data)
55
- pre_order_traversal(node.leftChild)
56
- pre_order_traversal(node.rightChild)
57
- end
58
- end
59
- def getDatas
60
- if @in_order_traversal_datas != nil
61
- @in_order_traversal_datas
62
- elsif @post_order_traversal_datas != nil
63
- @pre_order_traversal_datas
64
- elsif @pre_order_traversal_datas != nil
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
- end
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
@@ -1,3 +1,3 @@
1
1
  module YmDataTree
2
- VERSION = "0.1.1"
2
+ VERSION = "1.1.2"
3
3
  end
@@ -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{This gem useful for data structures}
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: 0.1.1
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-07 00:00:00.000000000 Z
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: This gem useful for data structures
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: []