You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Use the following code, it covers all the cases (root deletion, as well as if there's only one element in the tree, i.e. root), if there are only left subtree to the root and if there is only right subtree to the root:
HOPE THAT HELPS! :) :)
def delete_node(self, value):
if value < self.data:
if self.left:
self.left = self.left.delete_node(value)
elif value > self.data:
if self.right:
self.right = self.right.delete_node(value)
else:
if self.left is None and self.right is None:
self.data = None
return None
else:
if self.right:
min_val = self.right.find_min()
self.data = min_val
self.right = self.right.delete_node(min_val)
elif self.left:
max_val = self.left.find_max()
self.data = max_val
self.left = self.left.delete_node(max_val)
return self
https://github.com/codebasics/data-structures-algorithms-python/blob/master/data_structures/9_Binary_Tree_2/binary_tree_part_2.py

The text was updated successfully, but these errors were encountered: