Method: BiDimensionalTree#delete_node
- Defined in:
- lib/bi-dimensional-access.rb
#delete_node(x, y) ⇒ Object
Delete a selected node from the tree
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/bi-dimensional-access.rb', line 141 def delete_node(x, y) node = search_node(x, y) nodes = get_nodes_horiz([]) if nodes.include? node nodes.delete(node) @root = nodes[nodes.length / 2] @root.west = nil @root.east = nil @root.west = new_balance_nodes_horiz(nodes[0..(nodes.length / 2) - 1]) @root.east = new_balance_nodes_horiz(nodes[(nodes.length / 2) + 1..-1]) else nodes = get_column(node) nodes.delete(node) middle = nodes[nodes.length / 2] middle.south = nil middle.north = nil middle.south = new_balance_nodes_vert(nodes[0..(nodes.length / 2) - 1]) middle.north = new_balance_nodes_vert(nodes[(nodes.length / 2) + 1..-1]) end end |