Class Batfish::Trie::Node
In: lib/data/trie.rb
Parent: Object

This class represents a node in a Trie.

Methods

add   delete   each   fetch   new  

Attributes

children  [R] 
value  [R] 

Public Class methods

Initialize a Trie Node with the given object as its value or nil if no object is given.

[Source]

# File lib/data/trie.rb, line 82
      def initialize(value=nil)
        @value = value
        @children = {}
      end

Public Instance methods

Add a node to a node in a recursive way.

[Source]

# File lib/data/trie.rb, line 89
      def add(key, value)
        if key.empty?
          @value = value
        else
          letter = key.shift
          if !@children[letter]
            @children[letter] = Node.new()
          end
          @children[letter].add(key, value)
        end
      end

Delete a key value pair from a node in a recursive way.

[Source]

# File lib/data/trie.rb, line 103
      def delete(key)
        if key.empty?
          if !@value.nil? and @children.empty?
            @value = nil
            return true
          else
            @value = nil
            return false
          end
        end
        letter = key.shift
        if @children[letter].delete(key)
          @children.delete(letter)
          if @children.empty?
            return true
          end
        end
        return false
      end

Calls block once for each key value pairs under self.

[Source]

# File lib/data/trie.rb, line 140
      def each(key, &block)
        if value
          yield(key, value)
        end
        @children.each do |letter, child|
          child.each(key + letter, &block)
        end
      end

Returns the value associated with key. Returns nil if it is not found.

[Source]

# File lib/data/trie.rb, line 126
      def fetch(key)
        if key.empty?
          return @value
        end
        child = @children[key.shift]
        if child
          child.fetch(key)
        else
          return nil
        end
      end

[Validate]