Skip to content

Instantly share code, notes, and snippets.

@r00k
Created July 14, 2009 14:03
Show Gist options
  • Save r00k/146960 to your computer and use it in GitHub Desktop.
Save r00k/146960 to your computer and use it in GitHub Desktop.
##
# Delete a (key, value) pair.
#
# ==== Example
# t = Trie.new.insert("a", 1).insert("a", 2)
# t.delete_pair("a", 1) # t now only contains the second value
#
def delete_pair(key, value)
key = key.split('') if key.is_a?(String)
if key.empty?
@values.delete(value)
elsif key == @compressed_key
@compressed_values.delete(value)
@compressed_key.clear
elsif @children[key[0]]
@children[key[0]].delete_pair(key[1..-1], value)
@children.delete(key[0]) if @children[key[0]].empty?
end
self
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment