def recover(node: TreeNode) -> None: if node: if node.val == swap_nums[0]: node.val = swap_nums[1] elif node.val == swap_nums[1]: node.val = swap_nums[0] recover(node.left) recover(node.right)
def dfs(node: TreeNode) -> None: if node.right: dfs(node.right) self.v += node.val node.val = self.v if node.left: dfs(node.left)
def remove(node: TreeNode) -> Optional[TreeNode]: if not node.left: return node.right if not node.right: return node.left node.val = find_min(node.right) node.right = self.delete_node(node.right, node.val) return node