Create bst_delete_node.py

This commit is contained in:
marina 2023-08-03 14:23:13 -07:00 committed by GitHub
parent e1a2904cfe
commit 0c05504ae1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

46
trees/bst_delete_node.py Normal file
View File

@ -0,0 +1,46 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author: bt3gl
def successor(root):
root = root.right
while root.left:
root = root.left
return root.val
def predecessor(root):
root = root.left
while root.right:
root = root.right
return root.val
def delete_node(root, key):
if not root:
return root
if key > root.val:
root.right = deleteNode(root.right, key)
elif key < root.val:
root.left = deleteNode(root.left, key)
else:
if not (root.left or root.right):
root = None
elif root.right:
root.val = successor(root)
root.right = deleteNode(root.right, root.val)
else:
root.val = predecessor(root)
root.left = deleteNode(root.left, root.val)
return root