Recover Binary Search Tree
class Solution(object):
def recoverTree(self, root):
"""
:type root: TreeNode
:rtype: void Do not return anything, modify root in-place instead.
"""
self.first= None
self.two = None
self.prev = TreeNode(-sys.maxint)
self.traverse(root)
temp = self.first.val
self.first.val = self.two.val
self.two.val = temp
def traverse(self, root):
if root == None:
return
self.traverse(root.left)
if self.first == None and root.val < self.prev.val:
self.first = self.prev
if self.first and root.val < self.prev.val:
self.two = root
self.prev = root
self.traverse(root.right)Last updated