Skip to content

Instantly share code, notes, and snippets.

@fpaupier
Created June 27, 2021 07:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fpaupier/11a069d4098dcd409c7ddfb9a42afe05 to your computer and use it in GitHub Desktop.
Save fpaupier/11a069d4098dcd409c7ddfb9a42afe05 to your computer and use it in GitHub Desktop.
99. Recover Binary Search Tree
class Solution:
def __init__(self):
self.swap_a = None
self.swap_b = None
self.parent = TreeNode(float('-inf'))
def inorder(self, n: TreeNode) -> None:
if n == None:
return
self.inorder(n.left)
if self.swap_a == None and self.parent.val >= n.val:
self.swap_a = self.parent
if self.swap_a != None and self.parent.val >= n.val:
self.swap_b = n
self.parent = n
self.inorder(n.right)
def recoverTree(self, root: TreeNode) -> None:
"""
Do not return anything, modify root in-place instead.
"""
self.inorder(root)
self.swap_a.val, self.swap_b.val = self.swap_b.val, self.swap_a.val
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment