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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/tnode.rb +67 -0
  3. 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: []