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

results matching ""

    No results matching ""