def _delete_node_with_one_child(self, M): C = M.l or M.r assert(M.color is BLACK) if C.color is RED: C.color = BLACK BinarySearchTree._delete_node_with_one_child(self, M)
def _delete_leaf(self, n): if n.color is RED: # simple case BinarySearchTree._delete_leaf(self, n) else: self._delete_case1(n) BinarySearchTree._delete_leaf(self, n)
def __init__(self, iter = []): BinarySearchTree.__init__(self, iter, RedBlackNode)
def _delete_node_with_one_child(self, n): par = n.parent BinarySearchTree._delete_node_with_one_child(self, n) self._rebalance_till_root(par)
def _delete_leaf(self, n): par = n.parent BinarySearchTree._delete_leaf(self, n) self._rebalance_till_root(par)
def __init__(self, iter = []): BinarySearchTree.__init__(self, iter, AVLNode)