MCPcopy
hub / github.com/keon/algorithms / _merge

Method _merge

algorithms/data_structures/b_tree.py:259–279  ·  view source on GitHub ↗

Merge two child nodes and a parent key into a single node. Args: parent_node: The parent node. to_merge_index: Index of the child that receives the merged data. transferred_child_index: Index of the child being merged in.

(
        self, parent_node: Node, to_merge_index: int, transferred_child_index: int
    )

Source from the content-addressed store, hash-verified

257 parent_node.children[child_index].children.insert(0, ownerless_child)
258
259 def _merge(
260 self, parent_node: Node, to_merge_index: int, transferred_child_index: int
261 ) -> None:
262 """Merge two child nodes and a parent key into a single node.
263
264 Args:
265 parent_node: The parent node.
266 to_merge_index: Index of the child that receives the merged data.
267 transferred_child_index: Index of the child being merged in.
268 """
269 from_merge_node = parent_node.children.pop(transferred_child_index)
270 parent_key_to_merge = parent_node.keys.pop(to_merge_index)
271 to_merge_node = parent_node.children[to_merge_index]
272 to_merge_node.keys.append(parent_key_to_merge)
273 to_merge_node.keys.extend(from_merge_node.keys)
274
275 if not to_merge_node.is_leaf:
276 to_merge_node.children.extend(from_merge_node.children)
277
278 if parent_node == self.root and not parent_node.keys:
279 self.root = to_merge_node
280
281 def _remove_from_nonleaf_node(
282 self, node: Node, key_index: int

Callers 2

_repair_treeMethod · 0.95

Calls 1

popMethod · 0.45

Tested by

no test coverage detected