Module: Lite::Containers::AvlTree::Insert

Included in:
Implementation
Defined in:
lib/lite/containers/avl_tree/insert.rb

Instance Method Summary collapse

Instance Method Details

#insert(node, key, value, merge, factory) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/lite/containers/avl_tree/insert.rb', line 9

def insert(node, key, value, merge, factory)
  return true, factory.instance(key, value) if node.nil?

  case compare(key, node.key)
  when -1
    increment, node.left = insert(node.left, key, value, merge, factory)
    [increment, rebalance(node)]
  when 0
    node.value = merge.merge(node.value, value)
    [false, node]
  when 1
    increment, node.right = insert(node.right, key, value, merge, factory)
    [increment, rebalance(node)]
  end
end