Delete Node in a BST
递归删除即可,BST的标准操作
class Solution(object):
def deleteNode(self, root, key):
"""
:type root: TreeNode
:type key: int
:rtype: TreeNode
"""
if not root:
return None
if root.val < key:
root.right = self.deleteNode(root.right, key)
elif root.val > key:
root.left = self.deleteNode(root.left, key)
else:
if not root.left:
tmp = root.right
root = None
return tmp
elif not root.right:
tmp = root.left
root = None
return tmp
tmp = self.treeMin(root.right)
root.val = tmp.val
root.right = self.deleteNode(root.right, root.val)
return root
def treeMin(self, root):
while root.left:
root = root.left
return root