Class: Node

Inherits:
Object
  • Object
show all
Defined in:
lib/prefix_tree/node.rb

Constant Summary collapse

@@nodes =
[]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value = 'root') ⇒ Node

Returns a new instance of Node.



14
15
16
17
18
19
20
21
# File 'lib/prefix_tree/node.rb', line 14

def initialize(value = 'root')
  @value = value
  @children ||= []
  @strings_indexs = []
  @number_size = 0
  @@nodes << self
  @is_end_point = false
end

Instance Attribute Details

#childrenObject (readonly)

Returns the value of attribute children.



6
7
8
# File 'lib/prefix_tree/node.rb', line 6

def children
  @children
end

#is_end_pointObject (readonly)

Returns the value of attribute is_end_point.



6
7
8
# File 'lib/prefix_tree/node.rb', line 6

def is_end_point
  @is_end_point
end

#number_sizeObject (readonly)

Returns the value of attribute number_size.



6
7
8
# File 'lib/prefix_tree/node.rb', line 6

def number_size
  @number_size
end

#strings_indexsObject (readonly)

Returns the value of attribute strings_indexs.



6
7
8
# File 'lib/prefix_tree/node.rb', line 6

def strings_indexs
  @strings_indexs
end

#valueObject (readonly)

Returns the value of attribute value.



6
7
8
# File 'lib/prefix_tree/node.rb', line 6

def value
  @value
end

Class Method Details

.nodesObject



10
11
12
# File 'lib/prefix_tree/node.rb', line 10

def self.nodes
  @@nodes
end

Instance Method Details

#add_strings_indexs(index) ⇒ Object



61
62
63
# File 'lib/prefix_tree/node.rb', line 61

def add_strings_indexs(index)
  @strings_indexs << index
end

#become_end_pointObject



45
46
47
# File 'lib/prefix_tree/node.rb', line 45

def become_end_point
  @is_end_point = true
end

#create_child(char) ⇒ Object



23
24
25
26
# File 'lib/prefix_tree/node.rb', line 23

def create_child(char)
  @children << child = Node.new(char)
  child
end

#decrement_sizeObject



57
58
59
# File 'lib/prefix_tree/node.rb', line 57

def decrement_size
  @number_size -= 1
end

#delete_element(value) ⇒ Object



71
72
73
# File 'lib/prefix_tree/node.rb', line 71

def delete_element(value)
  @strings_indexs.delete_if { |element| element.eql? value }
end

#delete_nodeObject



28
29
30
# File 'lib/prefix_tree/node.rb', line 28

def delete_node
  @children.delete_if { |node| node.number_size.zero? }
end

#delete_strings_indexsObject



65
66
67
68
69
# File 'lib/prefix_tree/node.rb', line 65

def delete_strings_indexs
  @children.each do |node|
    erase_indexs(node)
  end
end

#find(char) ⇒ Object



40
41
42
43
# File 'lib/prefix_tree/node.rb', line 40

def find(char)
  @children.each { |node| return node if node.value == char }
  false
end

#include?(char) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/prefix_tree/node.rb', line 36

def include?(char)
  @children.any? { |node| node.value == char }
end

#increment_sizeObject



53
54
55
# File 'lib/prefix_tree/node.rb', line 53

def increment_size
  @number_size += 1
end

#not_end_pointObject



49
50
51
# File 'lib/prefix_tree/node.rb', line 49

def not_end_point
  @is_end_point = false
end

#to_sObject



32
33
34
# File 'lib/prefix_tree/node.rb', line 32

def to_s
  @value
end