tnode 0.0.0
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 +7 -0
- data/lib/tnode.rb +67 -0
- metadata +43 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 93248f7cb8d5019ed4509edff46e1bc95d8ce593bfaa2f5358fcf87754257144
|
4
|
+
data.tar.gz: 03bb7c311605111f2c8f8ce93ae698548c942a7bd74db7e18ef0c082bc841212
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d4c61cb15cb6396dbb67a1e655dfc86ea9b952033b2dfac7a8ba28f089ffaf361bcd3978d2ac62d6e876a98e5283393c495e8c51a5971026d785447557b8ec80
|
7
|
+
data.tar.gz: 788557d15716a52773be284d3171d0632a353a652a9fcba2cd965df36af064870e9298bd097bbe5e7addbd548d0b5ccb2ca9fba71f3686187a345a667fc054dc
|
data/lib/tnode.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
class Tnode
|
2
|
+
attr_accessor :data, :links
|
3
|
+
|
4
|
+
def initialize(data)
|
5
|
+
@data = data
|
6
|
+
@links = []
|
7
|
+
end
|
8
|
+
|
9
|
+
def insert(data)
|
10
|
+
@links << Tnode.new(data)
|
11
|
+
end
|
12
|
+
|
13
|
+
def traverse_dfs
|
14
|
+
traverse_dfs_arr = [data]
|
15
|
+
unless links.empty?
|
16
|
+
links.each do |child|
|
17
|
+
traverse_dfs_arr += child.traverse_dfs
|
18
|
+
end
|
19
|
+
end
|
20
|
+
traverse_dfs_arr
|
21
|
+
end
|
22
|
+
|
23
|
+
def traverse_bfs
|
24
|
+
traverse_bfs_arr = [data]
|
25
|
+
@traverse_bfs_q = links.clone
|
26
|
+
until @traverse_bfs_q.empty?
|
27
|
+
traverse_bfs_arr << @traverse_bfs_q.first.data
|
28
|
+
@traverse_bfs_q += @traverse_bfs_q.shift.links
|
29
|
+
end
|
30
|
+
traverse_bfs_arr
|
31
|
+
end
|
32
|
+
|
33
|
+
def tree_find(key_data)
|
34
|
+
target_node = nil
|
35
|
+
if key_data == data
|
36
|
+
return self
|
37
|
+
else
|
38
|
+
unless links.empty?
|
39
|
+
links.each do |child|
|
40
|
+
target_node = child.tree_find(key_data)
|
41
|
+
return target_node unless target_node.nil?
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
nil
|
47
|
+
end
|
48
|
+
|
49
|
+
def remove_node(key_data)
|
50
|
+
links.each do |child|
|
51
|
+
if child.data == key_data
|
52
|
+
links.delete(child)
|
53
|
+
return
|
54
|
+
else
|
55
|
+
child.remove_node(key_data)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def tree_apart(tnode)
|
61
|
+
traverse.intersection(tnode.traverse).empty?
|
62
|
+
end
|
63
|
+
|
64
|
+
def insert_under(key_data, data)
|
65
|
+
tree_find(key_data).insert(data)
|
66
|
+
end
|
67
|
+
end
|
metadata
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tnode
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Rurika Misaka
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-06-09 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: My data structure homework
|
14
|
+
email: goblinmaiden1931@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/tnode.rb
|
20
|
+
homepage:
|
21
|
+
licenses:
|
22
|
+
- GLWTPL
|
23
|
+
metadata: {}
|
24
|
+
post_install_message:
|
25
|
+
rdoc_options: []
|
26
|
+
require_paths:
|
27
|
+
- lib
|
28
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
requirements: []
|
39
|
+
rubygems_version: 3.2.3
|
40
|
+
signing_key:
|
41
|
+
specification_version: 4
|
42
|
+
summary: Node of tree
|
43
|
+
test_files: []
|