mirror of
https://github.com/autistic-symposium/master-algorithms-py.git
synced 2025-04-29 12:16:14 -04:00
47 lines
911 B
Python
47 lines
911 B
Python
#!/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 root is None:
|
|
return root
|
|
|
|
if key > root.val:
|
|
root.right = delete_node(root.right, key)
|
|
|
|
elif key < root.val:
|
|
root.left = delete_node(root.left, key)
|
|
|
|
else:
|
|
if not (root.left or root.right):
|
|
root = None
|
|
|
|
elif root.right:
|
|
root.val = successor(root)
|
|
root.right = delete_node(root.right, root.val)
|
|
|
|
else:
|
|
root.val = predecessor(root)
|
|
root.left = delete_node(root.left, root.val)
|
|
|
|
return root
|
|
|