Итак, у меня есть этот код ruby, который я взял из Википедии и немного изменил:
@trie = Hash.new()
def build(str)
node = @trie
str.each_char { |ch|
cur = ch
prev_node = node
node = node[cur]
if node == nil
prev_node[cur] = Hash.new()
node = prev_node[cur]
end
}
end
build('dogs')
puts @trie.inspect
Сначала я запускал это на консоли irb, и каждый раз, когда я выводил node
, он просто давал мне пустой хэш каждый раз {}
, но когда я фактически вызывал эту функцию, строил с параметром 'dogs'
string, он на самом деле работает, и выводит {"d"=>{"o"=>{"g"=>{"s"=>{}}}}}
, что совершенно правильно.
Вероятно, это скорее вопрос Ruby, чем реальный вопрос о том, как работает алгоритм. Я не имею достаточного знания Ruby, чтобы понять, что там происходит, я думаю.