LintCode:删除二叉查找树的节点
"""
Definition of TreeNode:
class TreeNode:
def __init__(self, val):
self.val = val
self.left, self.right = None, None
"""
class Solution:
"""
@param root: The root of the binary search tree.
@param value: Remove the node with given value.
@return: The root of the binary search tree after removal.
"""
def removeNode(self, root, value):
if not root:
return
if root.val > value:
root.left = self.removeNode(root.left, value)
elif root.val < value:
root.right = self.removeNode(root.right, value)
elif root.left and root.right:
root.val = self.findMin(root.right)
self.removeNode(root.right, root.val)
else:
return root.left if root.left else root.right
return root
def findMin(self, root):
while root.left:
root = root.left
return root.val