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 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: []