Exemplo n.º 1
0
    def __delete(node, value):
        if node.left is None and node.right is None:
            node = None
        elif node.value > value:
            node.left = MutableTreap.__delete(node.left, value)
        elif node.value < value:
            node.right = MutableTreap.__delete(node.right, value)
        elif Treap.cmp(node.left, node.right) > 0:
            node = Treap.__rotateLeft(node)
            node.left = MutableTreap.__delete(node.left, value)
        else:
            node = Treap.__rotateRight(node)
            node.right = MutableTreap.__delete(node.right, value)

        return node
Exemplo n.º 2
0
   def __delete(node, value):
      if node.left is None and node.right is None:
         node = None
      elif node.value > value:
         node.left = MutableTreap.__delete(node.left, value)
      elif node.value < value:
         node.right = MutableTreap.__delete(node.right, value)
      elif Treap.cmp(node.left, node.right) > 0: 
         node = Treap.__rotateLeft(node)
         node.left = MutableTreap.__delete(node.left, value)
      else:
         node = Treap.__rotateRight(node)
         node.right = MutableTreap.__delete(node.right, value)

      return node
Exemplo n.º 3
0
    def __delete(node, value):
        if node.left is None and node.right is None:
            return None

        new = TreapNode(node=node)

        if node.value > value:
            new.left = ImmutableTreap.__delete(new.left, value)
        elif node.value < value:
            new.right = ImmutableTreap.__delete(new.right, value)
        elif Treap.cmp(node.left, node.right) > 0:
            new.right = TreapNode(node=new.right)
            new = Treap.__rotateLeft(new)
            new.left = ImmutableTreap.__delete(new.left, value)
        else:
            new.left = TreapNode(node=new.left)
            new = Treap.__rotateRight(new)
            new.right = ImmutableTreap.__delete(new.right, value)

        return new