Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def remove(self, key):
- node = self.tree
- nodePar = None
- #finding node with the key and its parent
- while (node != None):
- if node.key == key:
- break
- elif node.key < key:
- if node.right != None:
- if node.right.key ==key:
- nodePar = node
- node = node.right
- else:
- if node.left!=None:
- if node.left.key ==key:
- nodePar = node
- node = node.left
- if node == None:
- return False
- if node.right == None:
- if nodePar != None:
- if node.key>nodePar.key:
- nodePar.right = node.left
- else:
- nodePar.left = node.left
- else:
- self.tree = node.left
- elif node.left == None:
- if nodePar != None:
- if node.key>nodePar.key:
- nodePar.right = node.right
- else:
- nodePar.left = node.right
- else:
- self.tree = node.right
- elif node.left!=None and node.right!=None:
- toExchange = node.right
- par = None
- while toExchange.left!=None:
- par = toExchange
- toExchange = toExchange.left
- node.value = toExchange.value
- node.key = toExchange.key
- if par!=None:
- par.left = toExchange.right
- if par == None:
- node.right = toExchange.right
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement