class Solution: def insertIntoBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]: cur = root node = TreeNode(val) pre = None if root == None: return node while cur: pre = cur if cur.val > val: cur = cur.left else: cur = cur.right
class Solution: def deleteNode(self, root: Optional[TreeNode], key: int) -> Optional[TreeNode]: def dfs(node): if not node: return None if node.val > key: node.left = dfs(node.left) return node if node.val < key: node.right = dfs(node.right) return node if not node.left and not node.right: return None if not node.left and node.right: return node.right if node.left and not node.right: return node.left cur = node.right pre = node while cur: pre = cur cur = cur.left pre.left = node.left