Advertisement
Fiszu

Untitled

May 27th, 2020
961
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.63 KB | None | 0 0
  1.     def remove(self, key):
  2.         node = self.tree
  3.         nodePar = None
  4.         #finding node with the key and its parent
  5.         while (node != None):
  6.             if node.key == key:
  7.                 break
  8.             elif node.key < key:
  9.                 if node.right != None:
  10.                     if node.right.key ==key:
  11.                         nodePar = node
  12.                 node = node.right
  13.             else:
  14.                 if node.left!=None:
  15.                     if node.left.key ==key:
  16.                         nodePar = node
  17.                 node = node.left
  18.         if node == None:
  19.              return False
  20.  
  21.         if node.right == None:
  22.             if nodePar != None:
  23.                 if node.key>nodePar.key:
  24.                     nodePar.right = node.left
  25.                 else:
  26.                     nodePar.left = node.left
  27.             else:
  28.                 self.tree = node.left
  29.  
  30.         elif node.left == None:
  31.             if nodePar != None:
  32.                 if node.key>nodePar.key:
  33.                     nodePar.right = node.right
  34.                 else:
  35.                     nodePar.left = node.right
  36.             else:
  37.                 self.tree = node.right
  38.         elif node.left!=None and node.right!=None:
  39.             toExchange = node.right
  40.             par = None
  41.             while toExchange.left!=None:
  42.                 par = toExchange
  43.                 toExchange = toExchange.left
  44.             node.value = toExchange.value
  45.             node.key = toExchange.key
  46.             if par!=None:
  47.                 par.left = toExchange.right
  48.             if par == None:
  49.                 node.right = toExchange.right
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement