Class: PrefixTree

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializePrefixTree

Returns a new instance of PrefixTree.



13
14
15
16
17
18
# File 'lib/prefix_tree.rb', line 13

def initialize
  @root = Node.new
  @number_of_input_strings = 0
  @dictionary = {}
  @dictionary_by_strings = {}
end

Instance Attribute Details

#dictionaryObject (readonly)

Returns the value of attribute dictionary.



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

def dictionary
  @dictionary
end

Instance Method Details

#add(input_value) ⇒ Object



20
21
22
23
# File 'lib/prefix_tree.rb', line 20

def add(input_value)
  input_value = convert_to_string(input_value)
  add_word(input_value.downcase)
end

#delete(input_value) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/prefix_tree.rb', line 25

def delete(input_value)
  return NO_WORD unless find(input_value)

  decrease_size(input_value)
  delete_string_index(input_value)
  delete_nodes(input_value)
end

#find(input_value) ⇒ Object



37
38
39
40
41
42
# File 'lib/prefix_tree.rb', line 37

def find(input_value)
  node = find_prefix_node(input_value)
  return false unless node

  node.is_end_point
end

#include?(input_value) ⇒ Boolean

Returns:

  • (Boolean)


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

def include?(input_value)
  find_prefix_node(input_value) ? true : false
end

#list(input_value) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/prefix_tree.rb', line 44

def list(input_value)
  node = @root
  input_value.each_char do |char|
    node = find_node(node, char)
    return false unless node
  end
  write_appropriate_strings(node, input_value)
end