Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def delete(self, v):
- '''
- Removes the value `v` from the tree and returns the new (updated) tree.
- If `v` is a non-member, the same tree is returned without modification.
- '''
- if self.is_empty():
- return self
- if v < self.value():
- return self.cons(self.lc().delete(v),self.rc())
- if v > self.value():
- return self.cons(self.lc(),self.rc().delete(v))
- if v is self.value():
- return self.Unlink(v)
- else:
- return self
- def Unlink(self,v):
- if self.lc().value() is None and self.rc().value() is None:
- return self.set_value(None)
- if self.lc().value() is None:
- return self.rc()
- elif self.rc().value() is None:
- return self.lc()
- else:
- if self.rc().height() > self.lc().height():
- temp = self.rc().Minimum()
- self.set_value(temp)
- return self.cons(self.lc(),self.rc().delete(temp))
- else:
- temp = self.lc().Maximum()
- self.set_value(temp)
- return self.cons(self.lc().delete(temp),self.rc())
- def Minimum(self):
- if self.lc().value() is not None:
- return self.lc().value().Minimum()
- else:
- return self.value()
- def Maximum(self):
- if self.rc().value() is not None:
- return self.rc().value().Maximum()
- else:
- return self.value()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement