tree_handler 0.1.0 → 0.1.1
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 +85 -4
- data/lib/tree_handler.rb +8 -4
- data/lib/tree_handler/version.rb +1 -1
- data/tree_handler-0.1.0.gem +0 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 79d3c24fed8097d3bcfc15df3d0b7afd7d4dcfa965df02e445d438d4304b645c
|
4
|
+
data.tar.gz: df770293c7328d0be9fcee5f357e9900492848003e2fd957bbc5ec7377c3e09c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e53a26a4f054e86002aaaeffc86b63abe4d74d8fc2f69e4bf751f4a26892deb4092f7d9f3bf9bddbd776e6832bbf3bf23696e147a2e1a7822b21e1a4f309467e
|
7
|
+
data.tar.gz: 6aea9508d5bd129dd2b39bb5bfa6715409951ee07c8026c3780cdd063ad96d9294af98ca9069be435e466961ba1cf6f469792c0eb3e9da340715aca6400ecdd2
|
data/README.md
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
# TreeHandler
|
2
|
+
TreeHandler is a ruby library allowing yourself to discover **binary trees**.
|
3
|
+
Build your own data structure and search trough your model with Tree Traversals (in-order, pre-order, post-order and level-order)
|
2
4
|
|
3
|
-
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/tree_handler`. To experiment with that code, run `bin/console` for an interactive prompt.
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
6
5
|
|
7
6
|
## Installation
|
8
7
|
|
@@ -22,7 +21,88 @@ Or install it yourself as:
|
|
22
21
|
|
23
22
|
## Usage
|
24
23
|
|
25
|
-
|
24
|
+
Be aware that this library works only without duplicate value.
|
25
|
+
|
26
|
+
### Modification methods
|
27
|
+
|
28
|
+
start by creating a new tree
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
my_object = TreeHandler.new(array)
|
32
|
+
# @params : an array of integer (duplicate value won't raise error, they are automatically removed)
|
33
|
+
# return : the full object with each node
|
34
|
+
```
|
35
|
+
|
36
|
+
|
37
|
+
You can then modify by inserting or deleting some nodes by value
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
my_object.insert(value)
|
41
|
+
# @params : an integer (an existing value will raise an error)
|
42
|
+
# return : The created node or RuntimeError (The same value can't be inserted twice) if value exists already
|
43
|
+
```
|
44
|
+
```ruby
|
45
|
+
my_object.delete(value, parent_pointer = @root)
|
46
|
+
# @params1 : an integer
|
47
|
+
# @params2 : the node where the search will start. Default value : root of the tree
|
48
|
+
# return : The deleted node or nil of value not found
|
49
|
+
```
|
50
|
+
To check if the tree is balanced (same depth on each child of the root), simply :
|
51
|
+
|
52
|
+
```ruby
|
53
|
+
my_object.balanced?
|
54
|
+
# return : true if balanced
|
55
|
+
```
|
56
|
+
|
57
|
+
To rebalance the tree, type :
|
58
|
+
|
59
|
+
```ruby
|
60
|
+
my_object.rebalance!
|
61
|
+
# return : the full object with each node
|
62
|
+
```
|
63
|
+
### Navigation methods
|
64
|
+
|
65
|
+
[Tree traversal](https://en.wikipedia.org/wiki/Tree_traversal#Breadth-first_search_/_level_order) is a way to visit each node in your tree.
|
66
|
+
|
67
|
+
```ruby
|
68
|
+
# preorder search
|
69
|
+
my_object.preorder
|
70
|
+
# return an array of integer
|
71
|
+
|
72
|
+
# inorder search
|
73
|
+
my_object.inorder
|
74
|
+
# return an array of integer
|
75
|
+
|
76
|
+
# postorder search
|
77
|
+
my_object.postorder
|
78
|
+
# return an array of integer
|
79
|
+
|
80
|
+
# breadth-first search / level order
|
81
|
+
my_object.level_order
|
82
|
+
# return an array of array for each level
|
83
|
+
```
|
84
|
+
|
85
|
+
Other useful method
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
# find node for a certain value
|
89
|
+
my_object.find(integer, start_node = @root)
|
90
|
+
# @params1 : integer, the value of the node desired
|
91
|
+
# @params2 : the node where the search will start. Default value : root of the tree
|
92
|
+
# return the node or nil if not found
|
93
|
+
|
94
|
+
# find parent a certain value
|
95
|
+
my_object.find_parent(integer)
|
96
|
+
# @params1 : integer
|
97
|
+
# return the parent's node of the value searched or nil if not found
|
98
|
+
# know the depth of your tree
|
99
|
+
my_object.depth(start_node)
|
100
|
+
# @params1 : the node where the search will start.
|
101
|
+
# return an integer of the tree's height
|
102
|
+
```
|
103
|
+
|
104
|
+
|
105
|
+
|
26
106
|
|
27
107
|
## Development
|
28
108
|
|
@@ -38,3 +118,4 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERN
|
|
38
118
|
## License
|
39
119
|
|
40
120
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
121
|
+
|
data/lib/tree_handler.rb
CHANGED
@@ -20,9 +20,13 @@ module TreeHandler
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def insert(value)
|
23
|
-
@data.
|
24
|
-
|
25
|
-
|
23
|
+
unless @data.include? value
|
24
|
+
@data.push(value)
|
25
|
+
node = Node.new(value)
|
26
|
+
compare(root, node)
|
27
|
+
else
|
28
|
+
raise "The same value can't be inserted twice"
|
29
|
+
end
|
26
30
|
end
|
27
31
|
|
28
32
|
def delete(value, parent_pointer = @root)
|
@@ -149,4 +153,4 @@ module TreeHandler
|
|
149
153
|
result
|
150
154
|
end
|
151
155
|
end
|
152
|
-
end
|
156
|
+
end
|
data/lib/tree_handler/version.rb
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tree_handler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tristan Hörler
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Set of functions to create, modify and search in a binary tree from a
|
14
14
|
list.
|
@@ -33,6 +33,7 @@ files:
|
|
33
33
|
- lib/tree_handler/comparable.rb
|
34
34
|
- lib/tree_handler/node.rb
|
35
35
|
- lib/tree_handler/version.rb
|
36
|
+
- tree_handler-0.1.0.gem
|
36
37
|
- tree_handler.gemspec
|
37
38
|
homepage: https://github.com/Ichenn92/tree_handler
|
38
39
|
licenses:
|